aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2015-07-09Merge branch 'maint'Zandra Hird
2015-07-09Merge branch 'c-rack/fix-typo2' into maintZandra Hird
* c-rack/fix-typo2: Fix small typo
2015-07-09Fix small typoConstantin Rack
2015-07-09Merge branch 'maint'Zandra Hird
2015-07-09Merge branch 'redvers/public_key_docfix' into maintZandra Hird
* redvers/public_key_docfix: Updated documentation to match implementation
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-08Updated OTP versionOTP-18.0.2Erlang/OTP
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/trace-file-eintr-bug/OTP-12890' into maint-18Erlang/OTP
* rickard/trace-file-eintr-bug/OTP-12890: Handle EINTR in trace_file_drv
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-08Merge branch 'maint'Dan Gudmundsson
* maint: wx: Add event callback fastpath wx: Event callbacks could hang wx application temporary wx: Make wxLANGUAGE_ variable wx: Send wxWdigets assert to error logger wx: Add mouse_capture_lost event wx: Fix code generator
2015-07-08Merge branch 'dgud/wx/send-asserts-to-erl' into maintDan Gudmundsson
* dgud/wx/send-asserts-to-erl: wx: Add event callback fastpath wx: Event callbacks could hang wx application temporary wx: Make wxLANGUAGE_ variable wx: Send wxWdigets assert to error logger wx: Add mouse_capture_lost event wx: Fix code generator
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-07wx: Add event callback fastpathDan Gudmundsson
Avoids spawn but can deadlock
2015-07-07Merge branch 'bjorn/erts/clang-opt'Björn Gustavsson
* bjorn/erts/clang-opt: (27 commits) Improve unpacking performance on x86_64 Slightly tweak the peformance for get_list Speed up list matching Eliminate the variable temp_bits at the top scope of process_main() Eliminate prefetch for conditional instructions Teach beam_makeops to pack operands for move3 and move_window Ensure that the move_call_ext_{last,only} instructions are used beam_makeops: Eliminate unnecessary masking when packing 3 operands Use a cheaper tag scheme for 'd' operands Introduce swap_temp/3 and swap/2 Introduce specialized versions of move2 Add back frequently used x(0) instructions Rewrite the hipe_mode_switch instructions Remove the last use of tmp_arg1 Eliminate use of tmp_arg1 and tmp_arg2 in bit syntax Remove the i_fetch instruction Eliminate use of i_fetch for bit syntax instructions Eliminate the use of i_fetch for BIF instructions Eliminate the use of i_fetch for relational operators Eliminate the use of i_fetch in arithmetic instructions ...
2015-07-06Updated OTP versionOTP-17.5.6.2Erlang/OTP
2015-07-06Prepare releaseErlang/OTP
2015-07-06Merge branch 'rickard/trace-file-eintr-bug/OTP-12890' into maint-17Erlang/OTP
* rickard/trace-file-eintr-bug/OTP-12890: Handle EINTR in trace_file_drv
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-06Handle EINTR in trace_file_drvRickard Green
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.
2015-07-05Merge branch 'maint'Hans Nilsson
* maint: ssh: be more generous about disconnect expects ssh: add disjunction to ssh_trpt_test_lib:match
2015-07-05Merge branch 'hans/ssh/no_common_algs/OTP-11531' into maintHans Nilsson
* hans/ssh/no_common_algs/OTP-11531: ssh: be more generous about disconnect expects ssh: add disjunction to ssh_trpt_test_lib:match
2015-07-04ssh: be more generous about disconnect expectsHans Nilsson
2015-07-04ssh: add disjunction to ssh_trpt_test_lib:matchHans Nilsson
2015-07-03Teach beam_makeops to pack operands for move3 and move_windowBjörn Gustavsson
It is currently only possible to pack up to 4 operands. However, the move_window4 instrucion has 5 operands and move_window5 and move3 instrucations have 6 operands. Teach beam_makeops to pack instructions with 5 or 6 operands. Also rewrite the move_window instructions in beam_emu.c to macros to allow their operands to get packed.
2015-07-03Ensure that the move_call_ext_{last,only} instructions are usedBjörn Gustavsson
Update transformations to ensure that the move_call_ext_last and move_call_ext_last are used.
2015-07-03beam_makeops: Eliminate unnecessary masking when packing 3 operandsBjörn Gustavsson
When packing 3 operands into one word, there would be an unnecessary mask operation when extracting the last operand.
2015-07-03Use a cheaper tag scheme for 'd' operandsBjörn Gustavsson
Since 'd' operands can only either an X register or an Y register, we only need a single bit to distinguish them. Furthermore, we can pre-multiply the register number with the word size to speed up address calculation.
2015-07-03Introduce swap_temp/3 and swap/2Björn Gustavsson
Sequences of three move instructionst that effectively swap the contents of two registers are fairly common. We can replace them with a swap_temp/3 instruction. The third operand is the temporary register to be used for swapping, since the temporary register may actually be used. If swap_temp/3 instruction is followed by a call, the temporary register will often (but not always) be killed by the call. If it is killed, we can replace the swap_temp/3 instruction with a slightly cheaper swap/2 instruction.
2015-07-03Introduce specialized versions of move2Björn Gustavsson
Currently, move2/2 does the two moves sequentially to ensure that the instruction will always work correctly. We can do better than that. If the two move instructions have any registers in common, we can introduce simpler and slightly more efficient instructions to handle those cases: move_shift/3 move_dup/3 For the remaining cases when the the move instructions have no common registers, the move2/4 instruction can perform the moves in parallel which is probably slightly more efficient. For clarity's sake, we will remain the instruction to move2_par/4.
2015-07-03Add back frequently used x(0) instructionsBjörn Gustavsson
2015-07-03Rewrite the hipe_mode_switch instructionsBjörn Gustavsson
The 'cmd' variable that were shared by several hipe_mode_switch instructions would cause clang to produce sub-optimal code, probably because it considered the instructions as part of of loop that needed to be optimized. What would was that 'cmd' would be assigned to the ESI register (lower 32 bits of the RSI register). It would use ESI for other purposes in instructions, but at the end of every instruction it would set ESI to 1 just in case the next instruction happened to be hipe_trap_return. This can be seen clearly if this commit is omitted and the define HIPE_MODE_SWITCH_CMD_RETURN in hipe/hipe_mode_switch.h is changed from 1 to some other number such as 42. You will see that 42 is assigned to ESI at the end of every instruction. Eliminate this problem by elimininating the shared 'cmd' variable.
2015-07-03Remove the last use of tmp_arg1Björn Gustavsson