aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam
AgeCommit message (Collapse)Author
2019-03-26Revert "Prepare release"Henrik Nord
This reverts commit 0118046f9bda8dcf3594184fa439b79267db8017.
2019-03-25Prepare releaseErlang/OTP
2019-03-25Merge branch 'sverker/bug-fixing'Sverker Eriksson
* sverker/bug-fixing: erts: Fix erts_debug:set_internal_state(reds_left) erts: Fix binary_SUITE:cmp_old_impl
2019-03-25erts: Fix erts_debug:set_internal_state(reds_left)Sverker Eriksson
to avoid failed ERTS_DBG_CHK_REDS by clearing virtual_reds.
2019-03-25Merge branch ↵Lukas Larsson
'lukas/erts/fragment-dist-messages/OTP-13397/OTP-15610/OTP-15611/OTP-15612/OTP-15613/OTP-15703' * lukas/erts/fragment-dist-messages/OTP-13397/OTP-15610/OTP-15611/OTP-15612/OTP-15613/OTP-15703: (26 commits) erts: Yield when exiting/free process is suspended by de doc: Fix Design Princ, statem incorrect anchor erts: Include external msg in need of GC erts: Include dist header in return from dist_ctrl_get_data erts: Fix so that exit/down terms stay alive erts: Pending signals can be for free processes erts: Fix faulty assert in reference_table_term etp: Don't crash etp-stack* when c_p->i is null erts: Adjust dist obuf size correctly after hdr fin erts: Fix non-payload dist exit signals erts: Always do trylock on proc locks when crash dumping Fix tests to work better in debug emulator erts: erts_factory_proc_init should not set hole marker erts: Skip heavy process tab tests in debug emu ts: Use same dynlinking logic for all bsd Revert "erts: Always run fds check after each testcase" erts: Always run fds check after each testcase erts: Always stop any testnodes before testcase exits erts: Add crash dumping of EXITING and FREE processes wx: Remove ERL_FLAGS from Makefile erlc command ...
2019-03-25erts: Yield when exiting/free process is suspended by deLukas Larsson
2019-03-25erts: Add an explanation for the empty stack check in next_catchJohn Högberg
2019-03-25erts: Include external msg in need of GCLukas Larsson
When many external messages suddenly appear in the mailbox the young gen size is adjusted accordingly but it was immediately shrunk as the data was not counted towards the shrink size. This commit includes the ext dist size in the shrink calculation which means that the decode of the external messages will not trigger as many GCs which means much better performance.
2019-03-25erts: Include dist header in return from dist_ctrl_get_dataLukas Larsson
2019-03-25erts: Fix so that exit/down terms stay aliveLukas Larsson
When the GC is run or the link/monitor node is deleted, the terms associated with it will also be deallocated so we have to make sure that we don't do any GCs and that all link/monitor nodes are copied onto the heap before the node is deallocated.
2019-03-25erts: Pending signals can be for free processesLukas Larsson
Since we no schedule free processes multiple times, pending signals can be from free as well as current processes.
2019-03-25erts: Fix faulty assert in reference_table_termLukas Larsson
2019-03-25erts: Adjust dist obuf size correctly after hdr finLukas Larsson
2019-03-25erts: Fix non-payload dist exit signalsLukas Larsson
When interacting with jinterface and erl_interface the old dist messages are used and they incorrectly used the external data.
2019-03-25erts: Always do trylock on proc locks when crash dumpingLukas Larsson
2019-03-25erts: erts_factory_proc_init should not set hole markerLukas Larsson
Setting the hole marker in debug on the entire heap is very slow so instead we do it in erts_produce_heap.
2019-03-25erts: Add crash dumping of EXITING and FREE processesLukas Larsson
2019-03-25erts: Fix incorrect ticket example in commentJohn Högberg
2019-03-25Revert "erts: Add debug dist obuf memory leak check"Lukas Larsson
This reverts commit f4c121b1d98bf3db7e6eecbb9fb5b292f2bc3bb0.
2019-03-25erts: Fix version error in erl_nif.hJohn Högberg
2019-03-22Merge branch 'sverker/enable-big-creation/OTP-15603'Sverker Eriksson
* sverker/enable-big-creation/OTP-15603: epmd: Support 32-bit creation values in local node erts: Robustify epmd reply function erts: Reject decoded local refs with too large first word erts: Fix bug in list_to_ref erl_interface: Remove old encoding of pid,port,refs erts: Remove old encoding of pids, ports and refs erts: Make DFLAG_BIG_CREATION mandatory
2019-03-22epmd: Support 32-bit creation values in local nodeSverker Eriksson
* Increase distribution version from 5 to 6 * Introduce new ALIVE2_X_RESP with 32-bit creation as reply to ALIVE2_REQ when sender dist version >= 6 * Still reply old ALIVE2_RESP with tiny creation 1..3 if sender dist version < 6.
2019-03-22erts: Reject decoded local refs with too large first wordSverker Eriksson
2019-03-22erts: Fix bug in list_to_refSverker Eriksson
First word must be less than (1 bsl 18) for local refs.
2019-03-22Suppress false positive warning in gcc 4.8.2Kjell Winblad
This commit suppresses the following warning in gcc 4.8.2: In file included from beam/bif.c:33:0: beam/bif.c: In function ‘iolist_size_1’: beam/bif.h:332:14: warning: ‘state_mref’ may be used uninitialized in this function [-Wmaybe-uninitialized] reg[0] = (A0); \ ^ beam/bif.c:2464:11: note: ‘state_mref’ was declared here Eterm state_mref;
2019-03-22beam_emu.c: Avoid triggering an assertion for the wrong reasonBjörn Gustavsson
Before 2d2e78ad6e66 that introduced tail-recursive calls of BIFs, the stack was guaranteed not to be empty when `erlang:raise/3` was called from the `catch` block of a `try` (because the `try` had set up a stack frame that would be deallocated after the `raise` call). Now the stack can be empty, so the ASSERT() call in next_catch() that checks that there is a continuation pointer at the top of the stack may fail. Move the ASSERT() call to after check for empty stack. While at it, also add a comment of the reason for the assertion.
2019-03-22Merge branch 'john/erts/fix-badarg-fixed_apply'John Högberg
* john/erts/fix-badarg-fixed_apply: erts: Include argument list on badarg in fixed_apply
2019-03-21Merge 'sverker/master/enif_whereis_pid-dirty-dtor/OTP-15694'Sverker Eriksson
* sverker/master/enif_whereis_pid-dirty-dtor: erts: Add test of enif_whereis* from resource destructor erts: Simplify nif_SUITE:nif_whereis* tests erts: Schedule resource destructors always
2019-03-21erts: Remove old encoding of pids, ports and refsSverker Eriksson
Always encode with 32-bit creation value.
2019-03-21erts: Make DFLAG_BIG_CREATION mandatorySverker Eriksson
2019-03-21Merge branch 'max-au/erts/dirty_scheduler_shutdown/PR-2172/OTP-15690' into ↵Erlang/OTP
maint-21 * max-au/erts/dirty_scheduler_shutdown/PR-2172/OTP-15690: erts: release dirty runqueue lock before entering endless loop when BEAM is shutting down # Conflicts: # erts/emulator/beam/erl_process.c
2019-03-21Merge branch 'maint'Rickard Green
* maint: Fix reception of resume signal on process executing dirty
2019-03-21Merge branch 'rickard/dist_ctrl_get_data/OTP-15617'Rickard Green
* rickard/dist_ctrl_get_data/OTP-15617: Testing of the example gen_tcp_dist module Add possibility to also get size of data from erlang:dist_ctrl_get_data()
2019-03-21erts: Include argument list on badarg in fixed_applyJohn Högberg
2019-03-21Merge pull request #2188 from bjorng/bjorn/tune-beam-3Björn Gustavsson
Tune BEAM instructions for the new compiler (part 3)
2019-03-21Merge branch 'max-au/erts/dirty_scheduler_shutdown/PR-2172/OTP-15690'Lukas Larsson
* max-au/erts/dirty_scheduler_shutdown/PR-2172/OTP-15690: erts: release dirty runqueue lock before entering endless loop when BEAM is shutting down
2019-03-21erts: release dirty runqueue lock before entering endless loop when BEAM is ↵Maxim Fedorov
shutting down This patch fixes a problem happening when BEAM is shutting down. It is possible for a dirty scheduler to take the lock, and keep it, when the system is shutting down. It may also happen that a normal scheduler decides to schedule some dirty job (example is major garbage collection that results in migrating the process into dirty CPU queue), and hangs trying to take the lock that will never be released. To fix the problem, either release the lock before entering endless wait loop, or reverse the order in which schedulers are stopped. Either fix works, and, of course, it works even better to apply both.
2019-03-20Fix reception of resume signal on process executing dirtyRickard Green
If a suspend/resume signal pair was sent to a process while it was executing dirty the resume counter on the process got into an inconsistent state. This in turn could cause the process to enter a suspended state indefinitely.
2019-03-20Optimize moving of several Y registers to X registersBjörn Gustavsson
Introduce move_src_window[234] instructions for moving several consecutively numbered Y registers to discontiguously numbered X registers. This optimization is effective because the compiler has sorted the `move` instructions in Y register order.
2019-03-19Merge branch 'sverker/enif_whereis_pid-dirty-dtor'Sverker Eriksson
into sverker/master/enif_whereis_pid-dirty-dtor
2019-03-19Add possibility to also get size of data from erlang:dist_ctrl_get_data()Rickard Green
2019-03-19erts: Schedule resource destructors alwaysSverker Eriksson
to run user NIF code in a more known execution context. Fixes problems like user calling enif_whereis_pid() in destructor which may need to release process main lock in order to lock reg_tab.
2019-03-19Optimize map updating instructionsBjörn Gustavsson
2019-03-19Optimize funs converted to literalsBjörn Gustavsson
2019-03-19Combine move and init to move_shiftBjörn Gustavsson
2019-03-19Remove the move_dup instructionBjörn Gustavsson
move_dup is used very infrequently.
2019-03-19Optimize some common uses of '+' and '-'Björn Gustavsson
2019-03-19Extend move_shift to accept a literal Src operandBjörn Gustavsson
2019-03-19Tune the move_jump instructionBjörn Gustavsson
With the new compiler, it has become less common with a move to x(0) before a jump. Change the move_jump instruction to take a destination as well as a source.
2019-03-19Eliminate i_length_setup with a literal list operandBjörn Gustavsson