aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator
AgeCommit message (Collapse)Author
2017-11-05HiPE: Support literal tagsMagnus Lång
Literal tags are used by the VM as an alternative to reserving a large virtual memory space in order to be able to quickly identify which terms are literals. The use of literal tags harms performance, but is useful to support systems where allocating a large amount of virtual memory is not an option.
2017-11-05HiPE: Make is_divisible a primopMagnus Lång
Since gcunsafe values are live over is_divisible calls (although only the happy path, which never GCd), it should be a primop so there cannot be any GCs.
2017-11-03Merge branch 'maint'Sverker Eriksson
2017-11-03Merge PR-1607 from sverker/hipe_bin_utf32_bug OTP-14740Sverker Eriksson
Fix hipe bug in binary <<X/utf32>> construction
2017-11-03Fix bug in hipe for <<X/utf32>>Sverker Eriksson
by introducing new primop 'is_unicode' with no exception (ab)use and no GC. Replaces bs_validate_unicode which is kept for backward compat for now.
2017-11-03Prevent hipe_bs_validate_unicode from doing GCSverker Eriksson
Fix for x86_64 only. The calling native code can not handle a GC as it has a raw pointer where to write the binary data. If a GC happens the data (utf32) will be written to the old deallocated heap.
2017-11-02Merge branch 'john/erts/msacc-dirty-schedulers/OTP-14707'John Högberg
2017-11-01Merge pull request #1592 from falkevik/sctp_return_only_connect_errorsRaimo Niskanen
OTP-13760 SCTP connect could return error even if the connect is ongoing
2017-10-30Merge branch 'lukas/erts/misc_fixes'Lukas Larsson
* lukas/erts/misc_fixes: erts: Fix a bunch of compiler warnings kernel: Fix gen_tcp_misc indentation erts: Fail port_SUITE:huge_env if error code > 127 erts: Add lcnt prototype for dist locks update
2017-10-30erts: Fix a bunch of compiler warningsLukas Larsson
2017-10-30Merge branch 'lukas/erts/pgo/OTP-14604'Lukas Larsson
* lukas/erts/pgo/OTP-14604: erts: Only do PGO if gcc supports -fprofile-correction
2017-10-30Merge pull request #1610 from bjorng/bjorn/erts/is_builtin/ERL-500/OTP-14713Björn Gustavsson
Correct erlang:is_builtin/3 for apply/2 and yield/0
2017-10-30Merge branch 'maint'Björn Gustavsson
* maint: erl_process_dump: Don't assume that literals can be found Remove one superfluous closing parenthesis in oam_intro.xml
2017-10-30erl_process_dump: Don't assume that literals can be foundBjörn Gustavsson
Native code does not register its literals in the code header for the loaded code. Therefore, a literal created by native code can not be found by mark_literal(). Ignore literals that can't be found instead of crashing (the crasdump_viewer will report such literals as incomplete heap data, but will not crash).
2017-10-27Merge branch 'lukas/erts/gc-docs'Lukas Larsson
* lukas/erts/gc-docs: erts: Add Garbage Collection internal docs
2017-10-27erts: Add Garbage Collection internal docsLukas Larsson
2017-10-27Correct erlang:is_builtin/3 for apply/2 and yield/0Björn Gustavsson
erlang:is_builtin(erlang, M, F) returns false for apply/2 and yield/0. The documentation for erlang:is_builtin/3 says that it returns true for BIFs that are implemented in C. apply/2 and yield/0 are implemented in C (as BEAM instructions), and therefore the correct return value is true. Also see a similar argument that was made for apply/3 in the past: http://erlang.org/pipermail/erlang-bugs/2015-October/005101.html https://bugs.erlang.org/browse/ERL-500
2017-10-25sctp: change connect to only return connect errorsJonas Falkevik
gen_sctp:connect_init/4 could return error even though the connect are in progress. I.e. connect on socket returned "in progress". The error can come from packet_inet_output() which is checking the socket for errors. The issue here is that from erlang you don't think the connect is still ongoing. But you will receive a sctp_assoc_change message later on.
2017-10-25Stop assuming that all schedulers are managed when updating msaccJohn Högberg
This fixes statistics_SUITE:msacc when dirty schedulers are used during the test.
2017-10-25erts: Only do PGO if gcc supports -fprofile-correctionLukas Larsson
2017-10-25Merge branch 'maint'John Högberg
* maint: Updated OTP version Update release notes Update version numbers erts: Fix so that bind correct schedulers Update version Fix error handling when decoding an AVP with an alternate dictionary Remove unused function arguments Fix faulty recursion vsn -> 2.1.2 Update appup for ERIERL-14684 Fix speling error 'sndbuf' -> 'recbuf' Add zlib:set_controlling_process/2
2017-10-25Merge branch 'maint-20' into maintJohn Högberg
* maint-20: Updated OTP version Update release notes Update version numbers erts: Fix so that bind correct schedulers Update version Fix error handling when decoding an AVP with an alternate dictionary Remove unused function arguments Fix faulty recursion vsn -> 2.1.2 Update appup for ERIERL-14684 Fix speling error 'sndbuf' -> 'recbuf' Add zlib:set_controlling_process/2
2017-10-25Merge branch 'lukas/erts/fix-cpu-bind-w-modifies-scheduler-avail/OTP-14694' ↵Erlang/OTP
into maint-20 * lukas/erts/fix-cpu-bind-w-modifies-scheduler-avail/OTP-14694: erts: Fix so that bind correct schedulers
2017-10-23erts: Fix so that bind correct schedulersLukas Larsson
When the cpu ids and scheduler ids don't match, the end schedulers could end up not being bound when they should be. example: > taskset -c 1-3 erl +S 4 +sbts > erlang:system_info(scheduler_bindings). {1,2,3,unbound} This fix makes it so that all cores are used to bind schedulers.
2017-10-23Merge branch 'bjorn/compiler/match-literals'Björn Gustavsson
* bjorn/compiler/match-literals: Optimize instructions for comparing a register with a literal Optimize matching of literals for single-valued types
2017-10-21Optimize instructions for comparing a register with a literalBjörn Gustavsson
We can avoid calling eq() from the is_eq_exact_literal/3 and is_ne_exact_literal/3 instructions if the source operand is an immediate (since a literal is either a boxed or a list, never an immediate).
2017-10-20Merge branch 'maint'Björn Gustavsson
* maint: Bump version of crash dumps to 0.4 Verify that binaries of different sizes are dumped correctly Don't dump literal areas that are not referenced at all Dump literals separately to avoid incomplete heap data Implement dumping of maps in crash dumps Buffer writing of crash dumps Conflicts: erts/emulator/beam/erl_alloc.types
2017-10-18erts: Fail port_SUITE:huge_env if error code > 127Lukas Larsson
This can happen for instance if erl_child_setup segfaults before it can do the execv.
2017-10-18erts: Add lcnt prototype for dist locks updateLukas Larsson
2017-10-18Merge branch 'bjorn/erts/cuddle-with-tests'Björn Gustavsson
* bjorn/erts/cuddle-with-tests: Eliminate use of deprecated functions in string Eliminate warnings for ignoring the result of an expression
2017-10-18Bump version of crash dumps to 0.4Björn Gustavsson
2017-10-18Don't dump literal areas that are not referenced at allBjörn Gustavsson
2017-10-18Dump literals separately to avoid incomplete heap dataBjörn Gustavsson
When a literal was used from several processes, the literal would be dumped in only one of the processes. The other processes that referenced the literals would have incomplete heap data.
2017-10-18Implement dumping of maps in crash dumpsBjörn Gustavsson
Maps would be dumped as the atom 'undefined', which is not very informative.
2017-10-18Buffer writing of crash dumpsBjörn Gustavsson
Writing of crash dumps were done using unbuffered IO. This is slow since many small writes are done. Use a FILE* with an allocated buffer to obtain buffered IO. I wrote a small test program that created 50000 binaries of 200 bytes each and then created a crash dump. The crash dumping was an order of magnitude faster with buffered IO than without.
2017-10-17Merge branch 'sverker/on_load-nonblocking/OTP-14680'Sverker Eriksson
* sverker/on_load-nonblocking/OTP-14680: erts: Remove scheduler blocking during finish_after_on_load_2
2017-10-17Merge branch 'maint'Sverker Eriksson
2017-10-17Merge branch 'sverker/dist-send-noreply-opt/OTP-14689' into maintSverker Eriksson
* sverker/dist-send-noreply-opt/OTP-14689: erts: Improve distribution send operations
2017-10-13Eliminate use of deprecated functions in stringBjörn Gustavsson
2017-10-13Merge pull request #1596 from bjorng/bjorn/enhance-try-catchBjörn Gustavsson
(Slightly) optimize catch and try/catch OTP-14683
2017-10-13Merge pull request #1599 from kostis/exception_SUITEBjörn Gustavsson
Explicitly disable HiPE's range analysis
2017-10-12Merge branch 'lukas/erts/use_SIGRTMIN_for_sys_suspend/OTP-14682'Lukas Larsson
* lukas/erts/use_SIGRTMIN_for_sys_suspend/OTP-14682: erts: Use SIGRTMIN on linux for sys_suspend
2017-10-12erts: Use SIGRTMIN on linux for sys_suspendLukas Larsson
The Linux real-time signal is better used on Linux for suspending schedulers during shutdown as it doesn't collide with SIGUSR2 usage of other applications.
2017-10-12Merge branch 'lukas/erts/poll-thread/OTP-14346'Lukas Larsson
* lukas/erts/poll-thread/OTP-14346: erts: Make a copy of erl_poll.c to help debuggers
2017-10-12Merge branch 'rickard/null-chars/ERL-370/OTP-14543'Rickard Green
* rickard/null-chars/ERL-370/OTP-14543: Don't allow null chars in various strings Conflicts: erts/emulator/beam/erl_alloc.types erts/preloaded/ebin/erlang.beam
2017-10-12Merge branch 'maint'Rickard Green
* maint: Revert "Merge branch 'rickard/null-char-filenames/ERL-370/OTP-14543' into maint"
2017-10-12Revert "Merge branch 'rickard/null-char-filenames/ERL-370/OTP-14543' into maint"Rickard Green
This reverts commit 0717a2194e863f3a78595184ccc5637697f03353, reversing changes made to 71a40658a0cef8b3e25df3a8e48a72d0563a89bf.
2017-10-12erts: Remove scheduler blocking during finish_after_on_load_2Sverker Eriksson
for normal case. We still block for default trace and hipe.
2017-10-12Merge branch 'maint'Lukas Larsson
Conflicts: erts/emulator/beam/beam_bp.c erts/emulator/beam/erl_process.c
2017-10-12Merge branch 'lukas/erts/tracing/recv_exit_signal_deadlock/OTP-14678' into maintLukas Larsson
* lukas/erts/tracing/recv_exit_signal_deadlock/OTP-14678: erts: Fix lock order when recv tracing trapped exit signal