aboutsummaryrefslogtreecommitdiffstats
path: root/erts
AgeCommit message (Collapse)Author
2017-07-13Merge branch 'maint'Sverker Eriksson
2017-07-13Merge branch 'sverker/big-bxor-bug/ERL-450/OTP-14514' into maintSverker Eriksson
* sverker/big-bxor-bug/ERL-450/OTP-14514: erts: Fix bug in bxor of a big negative number
2017-07-12erts: Fix bug in bxor of a big negative numberSverker Eriksson
Wrong result for (X bsl WS) bxor Y. where X is any negative integer Y is any integer that does not require more words than X WS is erlang:system_info(wordsize) or larger Fix: The subtraction of 1 (for 2-complement conversion) must be carried along all the way to the last words.
2017-07-12Merge branch 'maint'John Högberg
2017-07-11Fix building debug emulator on windowsJohn Högberg
CFLAGS weren't updated to include the sys/common directory for this build target.
2017-07-10Merge pull request #1505 from mikpe/erts-alignmentJohn Högberg
erts: ensure alignment of VM core types
2017-07-10josevalim/jv-op-stacktrace-entry/PR-1478/OTP-14508Lukas Larsson
Add stacktrace entries to BIF calls from emulator
2017-07-07Add stacktrace entries to BIF calls from emulatorJosé Valim
The goal of this change is to improve debugging of emulator calls. For example, the following code rem(1, y) will error with atom `badarith` when y is 0 and the stacktrace has no entry for `erlang:rem/2`, making such cases very hard to debug. This patch makes it so the stacktrace includes `erlang:rem(1, 0)`. The following emulator BIFs have been changed: * band/2 * bnot/1 * bor/2 * bsl/2 * bsr/2 * bxor/2 * div/2 * element/2 * int_div/2 * rem/2 * sminus/2 * splus/2 * stimes/2
2017-07-07Merge pull request #1498 from michalmuskala/new_map_litBjörn Gustavsson
Introduce new_map_lit operation in the loader OTP-14502
2017-07-07erts: ensure alignment of VM core typesMikael Pettersson
2017-07-06Merge branch 'maint'John Högberg
2017-07-06Merge branch 'john/erts/runtime-lcnt' into maintJohn Högberg
* john/erts/runtime-lcnt: Document rt_mask and add warnings about copy_save Add an emulator test suite for lock counting Break erts_debug:lock_counters/1 into separate BIFs Allow toggling lock counting at runtime Move lock flags to a common header Enable register_SUITE for lcnt builds Enable lcnt smoke test on all builds that have lcnt enabled Make lock counter info independent of the locks being counted OTP-14412 OTP-13170 OTP-14413
2017-07-06Add an emulator test suite for lock countingJohn Högberg
OTP-14413
2017-07-06Break erts_debug:lock_counters/1 into separate BIFsJohn Högberg
2017-07-06Allow toggling lock counting at runtimeJohn Högberg
The implementation is still hidden behind ERTS_ENABLE_LOCK_COUNT, and all categories are still enabled by default, but the actual counting can be toggled at will. OTP-13170
2017-07-06Move lock flags to a common headerJohn Högberg
2017-07-06Enable register_SUITE for lcnt buildsJohn Högberg
It was disabled for performance reasons, and the new implementation handles it just fine (roughly half as fast as without lcnt).
2017-07-06Merge branch 'maint'Sverker Eriksson
2017-07-06Merge branch 'sverker/prealloc-race-bug/maint' into maintSverker Eriksson
* sverker/prealloc-race-bug/maint: erts: Increase pre-allocated blocks #ifdef DEBUG
2017-07-06Introduce new_small_map_lit opMichal Muskala
Take advantage of the fact that small maps have a tuple for keys. When new map is constructed and all keys are literals, we can construct the entire keys tuple as a literal. This should reduce the memory of maps created with literal keys almost by half, since they all can share the same keys tuple.
2017-07-06Merge branch 'maint'Björn Gustavsson
* maint: macOS: Fix problems loading crypto
2017-07-06Merge pull request #1499 from josevalim/jv-tuple-callsBjörn Gustavsson
Make tuple calls opt-in OTP-14497
2017-07-04macOS: Fix problems loading cryptoBjörn Gustavsson
On macOS, it was not possible to start crypto after running observer. (ERL_251) On the beta of macOS 10.13 (High Sierra), crypto does not work at all. (ERL-439) The problem is that the use of the -flat_namespace option when linking dynamic drivers such as the one for crypto. With that option, all function names must be unique among all linked libraries and frameworks, or the wrong function could be called. Resolve the problem by using the two-level namespace as recommended by Apple. We need to use the -bundle_loader option to point out beam.smp when building all drivers and NIF libraries. https://bugs.erlang.org/browse/ERL-251 https://bugs.erlang.org/browse/ERL-439
2017-07-04Make tuple calls opt-inJosé Valim
Tuple calls is the ability to invoke a function on a tuple as first argument: 1> Var = dict:new(). {dict,0,16,16,8,80,48, {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, {{[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}}} 2> Var:size(). 0 This behaviour is considered by most to be undesired and confusing, especially when it comes to errors. For example, imagine you invoke "Mod:new()" where a Mod is an atom and you accidentally pass {ok, dict}. It raises: {undef,[{ok,new,[{ok,dict}],[]},...]} As it attempts to invoke ok:new/1, which is really hard to debug as there is no call to new/1 on the source code. Furthemore, this behaviour is implemented at the VM level, which imposes such semantics on all languages running on BEAM. Since we cannot remove the behaviour above, this proposal makes the behaviour opt-in with a compiler flag: -compile(tuple_calls). This means that, if a codebase relies on this functionality, they can keep compatibility by adding configuring their build tool to always use the 'tuple_calls' flag or explicitly on each module. As long as the compile attribute above is listed, the codebase will work on old and new Erlang versions alike. The only downside of the current implementation is that modules compiled on OTP 20 that rely on 'tuple_calls' will have to be recompiled to run with 'tuple_calls' on OTP 21+.
2017-07-04Merge branch 'maint'John Högberg
* maint: Updated OTP version Update release notes Update version numbers erts: Fix bug in quick alloc Fix old length usage in string stdlib: Fix bug in proc_lib Support arbitrary crash report in proc_lib.
2017-07-04Merge branch 'maint-20' into maintJohn Högberg
* maint-20: Updated OTP version Update release notes Update version numbers erts: Fix bug in quick alloc Fix old length usage in string stdlib: Fix bug in proc_lib Support arbitrary crash report in proc_lib.
2017-07-04Merge branch 'maint'Lukas Larsson
2017-07-03Merge pull request #1491 from eltex-ecss/e2k_supportLukas Larsson
Support e2k platform OTP-14492
2017-07-02escript.c: remove dead codeMikael Pettersson
2017-06-30erts: Increase pre-allocated blocks #ifdef DEBUGSverker Eriksson
Choose a "lagom" low value to provoke both fallback on erts_alloc AND thread racing in lockless deallocation queue.
2017-06-30Update release notesErlang/OTP
2017-06-30Update version numbersErlang/OTP
2017-06-30Merge branch 'sverker/prealloc-race-bug/OTP-14491' into maint-20Erlang/OTP
* sverker/prealloc-race-bug/OTP-14491: erts: Fix bug in quick alloc
2017-06-30Merge branch 'rickard/statistics/OTP-14484' into maint-20Erlang/OTP
* rickard/statistics/OTP-14484: Fix statistics(wall_clock) and statistics(runtime) implementation
2017-06-30Merge branch 'lukas/erts/fix_outputv_port_task_cleanup/ERL-428/OTP-14481' ↵Erlang/OTP
into maint-20 * lukas/erts/fix_outputv_port_task_cleanup/ERL-428/OTP-14481: fixup! erts: Cleanup dropped port tasks correctly erts: Add tests to detect port close race erts: Cleanup dropped port tasks correctly
2017-06-30Merge branch 'john/erts/fix-port-leak/OTP-13939/ERL-193' into maint-20Erlang/OTP
* john/erts/fix-port-leak/OTP-13939/ERL-193: Add a testcase for OTP-13939/ERL-193 Mark socket disconnected on tcp_send_or_shutdown_error # Conflicts: # lib/kernel/test/gen_tcp_misc_SUITE.erl
2017-06-30erts: Fix bug in quick allocSverker Eriksson
The effect of the race is that a pre-allocated memory block is inserted last without updating tail.data.last, which will cause all subsequent insertions to also fail to update tail.data.last. Hence all pre-allocation for this quick alloc instance is leaked for this thread and will fallback on erts_alloc.
2017-06-29Merge branch 'maint'Sverker Eriksson
2017-06-29Merge branch 'sverker/erts/apply-badarg/ERL-432/OTP-14490' into maintSverker Eriksson
* sverker/erts/apply-badarg/ERL-432/OTP-14490: erts: Make apply throw 'badarg' if Args is not a list
2017-06-28Reduce C code size for bit syntax instructionsBjörn Gustavsson
Bit syntax instructions never store their result in a Y register. Therefore, change the bit syntax instructions to use 'x' as the destination instead of 'd'. That will simplify the code that stores the result, and will be a slight reduction in code size and execution time.
2017-06-28ops.tab: Use combined operandsBjörn Gustavsson
2017-06-28Merge branch 'maint'Björn Gustavsson
* maint: Eliminate potential unsafe use of general destination
2017-06-28Merge branch 'bjorn/erts/fix-gen-dest' into maintBjörn Gustavsson
* bjorn/erts/fix-gen-dest: Eliminate potential unsafe use of general destination
2017-06-28Merge branch 'john/erts/cleanup-dirty-asserts'John Högberg
2017-06-27erts: Make apply throw 'badarg' if Args is not a listSverker Eriksson
instead of a strange 'undef' exception.
2017-06-27Merge branch 'maint-19' into maintJohn Högberg
* maint-19: Updated OTP version Update release notes Update version numbers Fix statistics(wall_clock) and statistics(runtime) implementation fixup! erts: Cleanup dropped port tasks correctly erts: Add tests to detect port close race Add a testcase for OTP-13939/ERL-193 erts: Cleanup dropped port tasks correctly Mark socket disconnected on tcp_send_or_shutdown_error
2017-06-26Update release notesErlang/OTP
2017-06-26Update version numbersErlang/OTP
2017-06-26Merge branch 'rickard/statistics/OTP-14484' into maint-19Erlang/OTP
* rickard/statistics/OTP-14484: Fix statistics(wall_clock) and statistics(runtime) implementation
2017-06-26Merge branch 'lukas/erts/fix_outputv_port_task_cleanup/ERL-428/OTP-14481' ↵Erlang/OTP
into maint-19 * lukas/erts/fix_outputv_port_task_cleanup/ERL-428/OTP-14481: fixup! erts: Cleanup dropped port tasks correctly erts: Add tests to detect port close race erts: Cleanup dropped port tasks correctly