aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam
AgeCommit message (Collapse)Author
2019-06-24Merge branch 'maint'Björn Gustavsson
* maint: Handle addition of bignum + variable in unoptimized code
2019-06-24Merge branch 'bjorn/erts/unoptimized-plus' into maintBjörn Gustavsson
* bjorn/erts/unoptimized-plus: Handle addition of bignum + variable in unoptimized code
2019-06-19Merge pull request #2110 from NattyNarwhal/aix-fixes/OTP-15866Lukas Larsson
Wake AIX up from coma
2019-06-18Merge branch 'kjell/stdlib/ets_ordered_set_slow_react/OTP-15906' into maintKjell Winblad
* kjell/stdlib/ets_ordered_set_slow_react/OTP-15906: ETS ordered_set: Improvements to the CA tree implementation
2019-06-18ETS ordered_set: Improvements to the CA tree implementationKjell Winblad
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.
2019-06-18Merge branch 'maint'Lukas Larsson
2019-06-18Merge pull request #2270 from essen/dist-get-stat-real-pend-value/OTP-15905Lukas Larsson
Return real pend value in erlang:dist_get_stat/1
2019-06-17Merge branch 'maint'John Högberg
* maint: erts: Relax the constraint introduced in OTP-15871
2019-06-17Merge branch 'john/erts/fix-conservative/OTP-15881' into maintJohn Högberg
* john/erts/fix-conservative/OTP-15881: erts: Relax the constraint introduced in OTP-15871
2019-06-17Merge branch 'maint'Rickard Green
* maint: Don't disconnect on remote exit/2 with old incarnation as recipient
2019-06-17Merge branch 'rickard/dist-exit2/22/OTP-15867' into maintRickard Green
* rickard/dist-exit2/22/OTP-15867: Don't disconnect on remote exit/2 with old incarnation as recipient
2019-06-17Merge branch 'bjorn/better-fun-info/OTP-15837'Björn Gustavsson
* bjorn/better-fun-info/OTP-15837: Create a shared wrapper function for all occurrences of 'fun F/A' Support sharing of fun entries in the runtime system erl_fun.c: Remove unused struct definition hipe: Use the new index when translating funs Stop supporting decoding of old funs in the external term format genop.tab: Insert an "OTP 23" comment for clarity
2019-06-17Merge branch 'rickard/dist-exit2/21/OTP-15867' into ↵Rickard Green
rickard/dist-exit2/22/OTP-15867 * rickard/dist-exit2/21/OTP-15867: Don't disconnect on remote exit/2 with old incarnation as recipient
2019-06-17Merge branch 'rickard/dist-exit2/20/OTP-15867' into ↵Rickard Green
rickard/dist-exit2/21/OTP-15867 * rickard/dist-exit2/20/OTP-15867: Don't disconnect on remote exit/2 with old incarnation as recipient
2019-06-17Don't disconnect on remote exit/2 with old incarnation as recipientRickard Green
2019-06-17Merge branch 'maint'Lukas Larsson
2019-06-16Document extra message element also where trace message format is describedPéter Gömöri
2019-06-14Support sharing of fun entries in the runtime systemBjörn Gustavsson
Before OTP 23, there had to be a one-to-one correspodence between `make_fun2` instructions and fun entries. In the OTP 23 runtime system, start keying the fun entries with the explicit ("new") index included in the fun entry. That will allow multiple `make_fun2` instructions to refer to the same entry in the fun table. This change is safe for code compiled by OTP R15B or later, because the old and new indices are identical. The loader will refuse to load code where the old and new indices are not equal unless the code is known to be compiled with an OTP 23 compiler.
2019-06-14erl_fun.c: Remove unused struct definitionBjörn Gustavsson
2019-06-14Stop supporting decoding of old funs in the external term formatBjörn Gustavsson
The new external format for funs (NEW_FUN_EXT) was introduced in OTP R8 along with the `make_fun2` instruction. Therefore, it should be safe to stop decoding the old FUN_EXT tag.
2019-06-13erts: Relax the constraint introduced in OTP-15871John Högberg
2019-06-12Handle addition of bignum + variable in unoptimized codeBjörn Gustavsson
Also handles code compiled by OTP 21 and earlier.
2019-06-12Merge branch ↵Erlang/OTP
'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"
2019-06-12Merge branch 'sverker/erts/break-p-segv/ERL-965/OTP-15873' into maint-22Erlang/OTP
* sverker/erts/break-p-segv/ERL-965/OTP-15873: erts: Fix SEGV crash on shell break (p)roc info
2019-06-11ETS ordered_set: Improvements to the CA tree implementationKjell Winblad
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.
2019-06-11Merge branch 'maint'John Högberg
* maint: erts: Fix bad loader optimization of get_tuple_element beam_ssa_type: Fix incorrect bitstring unit determination
2019-06-11Merge branch 'john/erts/fix-bad-get_tuple_element-opt/OTP-15871/ERIERL-374' ↵John Högberg
into maint * john/erts/fix-bad-get_tuple_element-opt/OTP-15871/ERIERL-374: erts: Fix bad loader optimization of get_tuple_element
2019-06-10Merge branch 'maint'Sverker Eriksson
2019-06-10Merge branch ↵Sverker Eriksson
'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"
2019-06-10Merge branch 'maint'Sverker Eriksson
2019-06-10Merge branch 'sverker/erts/break-p-segv/ERL-965/OTP-15873' into maintSverker Eriksson
* sverker/erts/break-p-segv/ERL-965/OTP-15873: erts: Fix SEGV crash on shell break (p)roc info
2019-06-10erts: Fix bad loader optimization of get_tuple_elementJohn Högberg
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}}.
2019-06-04erts: Fix SEGV crash on shell break (p)roc infoSverker Eriksson
esdp==NULL if run by non scheduler thread.
2019-06-04Revert "erts: Force process_info(reductions) as signal"Sverker Eriksson
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.
2019-06-03Return real pend value in erlang:dist_get_stat/1Loïc Hoguin
Only the dist_util code is using this function and it already is compatible with a non-boolean value.
2019-05-29Merge branch 'maint'Sverker Eriksson
2019-05-29Merge branch 'sverker/seq-trace-label-old-heap-bug/ERL-700/OTP-15849' into maintSverker Eriksson
* 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,_)
2019-05-29Merge branch 'bjorn/erts/fix-wrong-class/ERIERL-367/OTP-15834' into maint-22Erlang/OTP
* bjorn/erts/fix-wrong-class/ERIERL-367/OTP-15834: Fix sticky class in exception
2019-05-29AIX needs this for mallopt tooCalvin Buckley
2019-05-29Fix AIX weirdness woth section attribute by not using itCalvin Buckley
I suspect XCOFF shenanigans.
2019-05-29Merge branch 'maint'Lukas Larsson
2019-05-28erts: Fix seq_trace:print/2 for arbitrary labelsSverker Eriksson
Would raise badarg if Label was not atom or small integer.
2019-05-28erts: Fix bug in seq_trace:set_token(label,_)Sverker Eriksson
If internal seq-trace tuple is on old heap an incorrect ref from old to new heap was made.
2019-05-28Merge pull request #2189 from ↵John Högberg
jhogberg/john/erts/seq-trace-on-spawn/OTP-15232/ERL-700 Propagate seq_trace tokens to spawned processes
2019-05-28Add missing attribute to debug variableMichał Muskała
Without this I wasn't able to compile the debug emulator, the compilation would fail with "section attribute is specified on redeclared variable" errors.
2019-05-27Merge branch 'john/misc-fixes-and-additions'John Högberg
* 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
2019-05-27Make erlang:phash2/1 and erlang:phash2/2 yieldKjell Winblad
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.
2019-05-24Merge branch 'maint'Björn Gustavsson
* maint: Fix sticky class in exception
2019-05-24Merge branch 'bjorn/erts/fix-wrong-class/ERIERL-367/OTP-15834' into maintBjörn Gustavsson
* bjorn/erts/fix-wrong-class/ERIERL-367/OTP-15834: Fix sticky class in exception
2019-05-23Fix sticky class in exceptionBjörn Gustavsson
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.