aboutsummaryrefslogtreecommitdiffstats
path: root/erts
AgeCommit message (Collapse)Author
2015-08-28Add missing behavior/behaviours to absform docsLoïc Hoguin
2015-08-27Fix ethread events with timeoutRickard Green
Lots of pthread platforms unnecessarily falled back on the pipe/select solution. This since we tried to use the same monotonic clock source for pthread_cond_timedwait() as used by OS monotonic time. This has been fixed on most platforms by using another clock source. Darwin can however not use pthread_cond_timedwait() with monotonic clock source and has to use the pipe/select solution. On darwin we now use select with _DARWIN_UNLIMITED_SELECT in order to be able to handle a large amount of file descriptors.
2015-08-24erts: Change THE_NON_VALUE to not be hard coded in hipe compilerSverker Eriksson
Instead ask running VM for the value of THE_NON_VALUE, which is different between opt and debug VM. Same hipe compiler can now compile for both opt and debug VM.
2015-08-21Improve choice of clock sources at build timeRickard Green
- Documented the configure switch --with-clock-resolution=<RES> - Changed default clock source for OS system time on Darwin to gettimeofday(). In order to use clock_get_time(CALENDER_CLOCK, ...) on Darwin, the user has to pass --with-clock-resolution=high when configuring the build.
2015-08-20Merge branch 'maint'Henrik Nord
Conflicts: OTP_VERSION erts/vsn.mk
2015-08-20Merge branch 'maint-18' into maintHenrik Nord
2015-08-18Merge branch 'maint'Lukas Larsson
* maint: erts: Make sure to unlock status lock when setting process prio
2015-08-18Merge branch 'lukas/erts/process_priority_unlock/OTP-12943' into maintLukas Larsson
* lukas/erts/process_priority_unlock/OTP-12943: erts: Make sure to unlock status lock when setting process prio
2015-08-18Prepare releaseErlang/OTP
2015-08-18Merge branch 'vinoski/stderr-eagain/OTP-12942' into maint-18Erlang/OTP
* vinoski/stderr-eagain/OTP-12942: Handle ERRNO_BLOCK in fd_driver async functions
2015-08-18Handle ERRNO_BLOCK in fd_driver async functionsSteve Vinoski
Several users on erlang-questions have reported problems with recent releases where output to standard_error causes standard_error_sup to die from receiving an unexpected eagain error. In the fd_driver, change the fd_async() function to handle EINTR, and change fd_ready_async() to handle ERRNO_BLOCK. Add a new test to standard_error_SUITE to generate output to standard_error and ensure that standard_error_sup does not die. Thanks to Kota Uenishi for contributing the test case.
2015-08-18erts: Fix binary memory leak in ttsl driverLukas Larsson
2015-08-13erts: Make sure to unlock status lock when setting process prioLukas Larsson
2015-08-11fix unused parameter warning in enif_make_pidDaniel Goertzen
2015-08-10Merge branch 'maint'Lukas Larsson
* maint: erts: Don't abort when a system process is terminated
2015-08-10Merge branch 'lukas/erts/system_process_core/OTP-12934' into maintLukas Larsson
* lukas/erts/system_process_core/OTP-12934: erts: Don't abort when a system process is terminated
2015-08-10Merge branch 'maint'Lukas Larsson
* maint: Teach smp VM how to deal with crash of a linked trace port
2015-08-10Merge branch 'sverk/smp-trace-port-exit-bug/OTP-12901' into maintLukas Larsson
* sverk/smp-trace-port-exit-bug/OTP-12901: Teach smp VM how to deal with crash of a linked trace port
2015-08-10Teach smp VM how to deal with crash of a linked trace portSverker Eriksson
Problem: The sys-msg-dispather crashes the VM when trying to send exit signals from the links of the terminating trace port. If try-lock of the linked process fails, a pending exit is scheduled and erts_scheduler_data() is then called to find "my" run queue. But sys-msg-dispatcher is not a scheduler and has no scheduler data, hence SEGV. Fix: If not a scheduler and we cannot get process locks, schedule process in its previous run-queue.
2015-08-05Merge branch 'maint'Björn Gustavsson
* maint: Fix crash when disassembling modules with BIFs
2015-08-05Merge branch 'bjorn/erts/beam_debug' into maintBjörn Gustavsson
* bjorn/erts/beam_debug: Fix crash when disassembling modules with BIFs
2015-07-31erts: fix binary_to_integer boundary caseMikael Pettersson
erlang:binary_to_integer/1 and /2 fail to detect invalid input consisting of a single + or - sign but nothing else. For an input like <<"+">> they return 0, while list_to_integer/1 correctly signals a badarg for "+". Fixed by checking if the input is empty after the initial +/- sign processing. Added a test case which fails without this fix but passes with it. Thanks to "niku" for reporting the issue.
2015-07-14erts: Update major version numberLukas Larsson
2015-07-14Merge branch 'lukas/ose/remove/OTP-12573'Lukas Larsson
* lukas/ose/remove/OTP-12573: Remove OSE from erl_interface ose: Remove all code related to the OSE port
2015-07-14erts: Don't abort when a system process is terminatedLukas Larsson
2015-07-10ose: Remove all code related to the OSE portLukas Larsson
The OSE port is no longer supported and this commit removed it and any changes related to it. The things that were general improvements have been left in the code.
2015-07-08Merge branch 'maint'Rickard Green
* maint: Updated OTP version Prepare release Fix calculation of end time Prefer monotonic time that stop during suspend Avoid unnecessary copying of data when retrieving corrected monotonic time Add the --enable-gettimeofday-as-os-system-time configure switch Conflicts: OTP_VERSION erts/vsn.mk
2015-07-08Merge branch 'maint-18' into maintRickard Green
* maint-18: Updated OTP version Prepare release Fix calculation of end time Prefer monotonic time that stop during suspend Avoid unnecessary copying of data when retrieving corrected monotonic time Add the --enable-gettimeofday-as-os-system-time configure switch
2015-07-08Prepare releaseErlang/OTP
2015-07-08Merge branch 'rickard/end-time-fix/OTP-12896' into maint-18Erlang/OTP
* rickard/end-time-fix/OTP-12896: Fix calculation of end time
2015-07-08Merge branch 'rickard/monotonic-clock-source/OTP-12895' into maint-18Erlang/OTP
* rickard/monotonic-clock-source/OTP-12895: Prefer monotonic time that stop during suspend
2015-07-08Merge branch 'rickard/read_corrected_time/OTP-12894' into maint-18Erlang/OTP
* rickard/read_corrected_time/OTP-12894: Avoid unnecessary copying of data when retrieving corrected monotonic time
2015-07-08Merge branch 'rickard/gettimeofday/OTP-12892' into maint-18Erlang/OTP
* rickard/gettimeofday/OTP-12892: Add the --enable-gettimeofday-as-os-system-time configure switch
2015-07-08Merge branch 'rickard/non-smp-trace-port-exit-bug/OTP-12889' into maint-18Erlang/OTP
* rickard/non-smp-trace-port-exit-bug/OTP-12889: Teach non-smp VM how to deal with trace port crash Test case testing crash in tracer port
2015-07-08Fix calculation of end timeRickard Green
2015-07-08Prefer monotonic time that stop during suspendRickard Green
2015-07-08Avoid unnecessary copying of data when retrieving corrected monotonic timeRickard Green
2015-07-08Fix crash when disassembling modules with BIFsBjörn Gustavsson
In a debug-compiled emulator, running erts_debug:df(io) would trigger an assertion failure: 1> erts_debug:df(io). beam/beam_debug.c:301:erts_debug_disassemble_1() Assertion failed: (((funcinfo[0]) & 0x3F) == ((0x0 << 4) | ((0x2 << 2) | 0x3))) Aborted (core dumped) It turns out that the assertion is wrong. It should have been updated in 64ccd8c9b7a7 which made it possible to have stubs for BIFs in the BEAM code for a module. The faulty assertion was only found when when 16317f73f79265 added a smoke test of the BEAM disassembler.
2015-07-07Add the --enable-gettimeofday-as-os-system-time configure switchRickard Green
Forces usage of gettimeofday() for OS system time
2015-07-07Merge branch 'maint'Zandra Hird
2015-07-07Merge branch 'maint-17' into maintZandra Hird
Conflicts: OTP_VERSION erts/doc/src/notes.xml erts/vsn.mk lib/runtime_tools/doc/src/notes.xml lib/runtime_tools/vsn.mk otp_versions.table
2015-07-06Prepare releaseErlang/OTP
2015-07-06Merge branch 'rickard/non-smp-trace-port-exit-bug/OTP-12889' into maint-17Erlang/OTP
* rickard/non-smp-trace-port-exit-bug/OTP-12889: Teach non-smp VM how to deal with trace port crash Test case testing crash in tracer port
2015-07-06Teach non-smp VM how to deal with trace port crashRickard Green
2015-07-06Test case testing crash in tracer portRickard Green
2015-07-06Improve unpacking performance on x86_64Björn Gustavsson
When unpacking operands on 64-bit CPUs, use a smarter mask to help the compiler optimize the code. It turns out that on x86_64, if we use the mask 0xFFFFUL (selecting the 16 least significant bits), the compiler can combine a move and a mask operation into the single insruction 'movzwl', which will eliminate one instruction.
2015-07-06Slightly tweak the peformance for get_listBjörn Gustavsson
Fetch the head and tail parts to temporary variables before writing them to their destinations. That should allow the CPU to perform the moves in parallel, which might improve performance.
2015-07-06Speed up list matchingBjörn Gustavsson
The combination is_non_empty_list followed by get_list is extremly common (but not in estone_SUITE, which is why it has not been noticed before). Therefore it is worthwile to introduce a combined instruction.
2015-07-06Eliminate the variable temp_bits at the top scope of process_main()Björn Gustavsson
2015-07-06Eliminate prefetch for conditional instructionsBjörn Gustavsson
Not pre-fetching in conditional instructions (instructions that use -fail_action) seems to improve performance slightly. The reason for that is that conditional instructions may jump to the failure label, wasting the pre-fetched instruction. Another reason is that that many conditional instructions do a function call, and the register pressure is therefore high. Avoiding the pre-fetch may reduce the register pressure and pontentially result in more efficient code.