aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2016-04-07erl_interface: Support 32-bit creation for pid,port,refsSverker Eriksson
2016-04-07erts: Support 32-bit creation for external pid,port,refsSverker Eriksson
from future nodes.
2016-04-07erl_interface: Cuddle test ei_tmo_SUITESverker Eriksson
Increase max number of messages sent to fill buffers.
2016-04-07test_server,erl_interface: Add test_host_not_reachable configSverker Eriksson
2016-04-07erts: Refactor ETS compressed encoding of local nodeSverker Eriksson
Instead of INTERNAL_CREATION (255), use empty atom for node name to mean the local node (regardless of node name or creation). The purpose is to get rid of special value 255, for future expansion of creation to 32-bit.
2016-04-07erts: Rename atom '' from am_Cookie to am_EmptySverker Eriksson
2016-04-07Merge branch 'egil/fix-erl_interface-tests'Björn-Egil Dahlberg
* egil/fix-erl_interface-tests: Remove forgotten line
2016-04-07Remove forgotten lineBjörn-Egil Dahlberg
2016-04-07Merge branch 'bjorn/erts/huge-file-fix/OTP-13461'Björn Gustavsson
* bjorn/erts/huge-file-fix/OTP-13461: Handle multi-giga byte writes to files
2016-04-07Merge branch 'bjorn/kernel/rpc-pinfo/ERL-124/OTP-13460'Björn Gustavsson
* bjorn/kernel/rpc-pinfo/ERL-124/OTP-13460: Update spec for rpc:pinfo/2
2016-04-07Update spec for rpc:pinfo/2Björn Gustavsson
rpc:pinfo/2 is documented as a location-transparent version of process_info/2. Therefore, it should be expected that the spec would allow calls with an item list, for example: rpc:pinfo(Pid, [initial_call,last_calls]) Report-URL: http://bugs.erlang.org/browse/ERL-124 Reported-by: bjfish
2016-04-07Merge branch 'bjorn/erts/beam_load'Björn Gustavsson
* bjorn/erts/beam_load: Eliminate unnecessary renaming of bs_put_utf16/3 Don't let the loader do the compiler's job Remove unused variables after code generation Avoid rebuilding unchanged instructions Introduce a 'rename' instruction Simplify window management for the transformation engine Eliminate allocation of variables in transform_engine() Refactor calls to transform_engine() ops.tab: Remove useless transformation
2016-04-07Eliminate unnecessary renaming of bs_put_utf16/3Björn Gustavsson
There is no reason to rename bs_put_utf16/3. (We rename instructions if we'll need to change the operands or if we will need to avoid an endless transformation loop. Neither of these reasons apply to bs_put_utf16/3.)
2016-04-07Don't let the loader do the compiler's jobBjörn Gustavsson
Optimizations that are possible to do by the compiler should be done by the compiler and not by the loader. If the compiler has done its job correctly, attempting to do the two transformations only wastes time.
2016-04-07Remove unused variables after code generationBjörn Gustavsson
The removal of instructions on the left side of a transformation is done while generating the code for the left side. Postpone removal of unused variables to a later, separate passes to allow more variables to be eliminated after the optimizations passes introduced in the previous commits.
2016-04-07Avoid rebuilding unchanged instructionsBjörn Gustavsson
In transformations such as: move S X0=x==0 | line Loc | call_ext Ar Func => \ line Loc | move S X0 | call_ext Ar Func we can avoid rebuilding the last instruction in the sequence by introducing a 'keep' instruction. Currently, there are only 13 transformations that are hit by this optimization, but most of them are frequently used.
2016-04-07Introduce a 'rename' instructionBjörn Gustavsson
Introduce a 'rename' instruction that can be used to optimize simple renaming with unchanged operands such as: get_tuple_element Reg P Dst => i_get_tuple_element Reg P Dst By allowing it to lower the arity of instruction, transformations such as the following can be handled: trim N Remaining => i_trim N All in all, currently 67 transformations can be optimized in this way, including some commonly used ones.
2016-04-07Simplify window management for the transformation engineBjörn Gustavsson
Generic instructions have a min_window field. Its purpose is to avoid calling transform_engine() when there are too few instructions in the current "transformation window" for a transformation to succeed. Currently it does not do much good since the window size will be decremented by one before being used. The reason for the subtraction is probably that in some circumstances in the past, the loader could read past the end of the BEAM module while attempting to fetch instructions to increase the window size. Therefore, it would not be safe to just remove the subtraction by one. The simplest and safest solution seems to always ensure that there are always at least TWO instructions when calling transform_engine(). That will be safe, as long as a BEAM module is always finished with an int_code_end/0 that is not involved in any transformation.
2016-04-07Eliminate allocation of variables in transform_engine()Björn Gustavsson
When an instruction with a variable number operands (such as select_val) is seen of the left side of a transformation, the 'next_arg' instruction will allocate a buffer to fit all variables and all operands will be copied into the buffer. Very often, the 'commit' instruction will never be reached because of a test or predicate failing or because of a short window; in that case, the variable buffer will be deallocated. Note that originally there were only few instructions with a variable number of operands, but now common operations such as tuple building also have a variable number of operands. To avoid those frequent allocations and deallocations, modify the 'next_arg' instruction to only save a pointer to the first of the "rest" arguments. Also move the deallocation of the instructions on the left side from the 'commit' instruction to the 'end' instruction to ensure that 'store_rest_args' will still work.
2016-04-07Merge branch 'sverk/crypto/no-ec2m'Sverker Eriksson
2016-04-07Merge branch 'RicoAntonioFelix/patch-1/PR-1003'Henrik Nord
* RicoAntonioFelix/patch-1/PR-1003: Update INSTALL.md
2016-04-07Merge branch 'derek121/mention_intellij_plugin/PR-970'Henrik Nord
* derek121/mention_intellij_plugin/PR-970: Add mention of IntelliJ plugin
2016-04-07Merge branch 'derek121/supervisor_docs/PR-974'Henrik Nord
* derek121/supervisor_docs/PR-974: Fix small supervisor docs grammar issue
2016-04-07Merge branch 'minostro/maint/PR-986'Henrik Nord
* minostro/maint/PR-986: Fix typo in funs programming examples document
2016-04-06Merge branch 'egil/erts/tracing-beam-lttng/OTP-10282'Björn-Egil Dahlberg
* egil/erts/tracing-beam-lttng/OTP-10282: erts: Don't use ratio in carrier lttng tracepoints Add lttng testcases erts: Extend erlang:system_info/1 with lttng Refactor and fix dtrace define in erl_message erts: Add lttng tracepoints for async pool queue erts: Add lttng tracepoints for drivers erts: Add lttng tracepoints for scheduler events erts: Add lttng tracepoints for memory carriers erts: Update lttng-wrapper with mfa conversion erts: Teach lttng to configure and build system
2016-04-06erts: Don't use ratio in carrier lttng tracepointsBjörn-Egil Dahlberg
2016-04-06Add lttng testcasesBjörn-Egil Dahlberg
2016-04-06erts: Extend erlang:system_info/1 with lttngBjörn-Egil Dahlberg
Let erlang:system_info(dynamic_trace) be able to return 'lttng' if enabled.
2016-04-06Refactor and fix dtrace define in erl_messageBjörn-Egil Dahlberg
2016-04-06erts: Add lttng tracepoints for async pool queueBjörn-Egil Dahlberg
* aio_pool_get * aio_pool_add
2016-04-06erts: Add lttng tracepoints for driversBjörn-Egil Dahlberg
* driver_event * driver_flush * driver_finish * driver_init * driver_output * driver_outputv * driver_process_exit * driver_ready_async * driver_ready_input * driver_ready_output * driver_start * driver_stop * driver_stop_select * driver_timeout
2016-04-06erts: Add lttng tracepoints for scheduler eventsBjörn-Egil Dahlberg
* scheduler_poll
2016-04-06erts: Add lttng tracepoints for memory carriersBjörn-Egil Dahlberg
* carrier_create * carrier_destroy * carrier_pool_put * carrier_pool_get
2016-04-06erts: Update lttng-wrapper with mfa conversionBjörn-Egil Dahlberg
2016-04-06erts: Teach lttng to configure and build systemBjörn-Egil Dahlberg
Introduce a wrapper API for lttng.
2016-04-06Merge branch 'egil/erts/fix-file_info/OTP-13478'Björn-Egil Dahlberg
* egil/erts/fix-file_info/OTP-13478: Don't check dates before 1970 Log additional test information in prim_file_SUITE Relax file_info tests Refactor time_t in efile_drv
2016-04-06Refactor calls to transform_engine()Björn Gustavsson
We used to set last_op_next and last_op to NULL just in case. Setting last_op_next to causes a rescan of the instructions to find the last instruction in the chain, so we would want to avoid that unless really necessary.
2016-04-06ops.tab: Remove useless transformationBjörn Gustavsson
The transformation on the following line will do the job.
2016-04-06Merge branch 'ingela/ssl/config-signature-algs/OTP-13463'Ingela Anderton Andin
* ingela/ssl/config-signature-algs/OTP-13463: ssl: Remove default support for use of md5 in TLS 1.2 signature algorithms ssl: Add option signature_algs
2016-04-06ssl: Remove default support for use of md5 in TLS 1.2 signature algorithmsIngela Anderton Andin
2016-04-06ssl: Add option signature_algsIngela Anderton Andin
In TLS-1.2 The signature algorithm and the hash function algorithm used to produce the digest that is used when creating the digital signature may be negotiated through the signature algorithm extension RFC 5246. We want to make these algorithm pairs configurable. In connections using lower versions of TLS these algorithms are implicit defined and can not be negotiated or configured. DTLS is updated to not cause dialyzer errors, but needs to get a real implementation later.
2016-04-06Add mention of IntelliJ pluginDerek Brown
Eclipse plugin was mentioned, but not for IntelliJ.
2016-04-05Update INSTALL.mdRico Antonio Felix
* Fixed a grammatical error.
2016-04-05Merge branch 'lukas/stdlib/error_logger_SUITE/OTP-13471'Lukas Larsson
* lukas/stdlib/error_logger_SUITE/OTP-13471: stdlib: Fix logfile testcase for hipelibs testrun
2016-04-05Merge branch 'waisbrot/remove-mod_include/PR-988/OTP-13445'Hans Nilsson
2016-04-05Merge branch 'FabioBatSilva/httpc-delete-body/PR-972/OTP-13383'Lars Thorsen
* FabioBatSilva/httpc-delete-body/PR-972/OTP-13383: inets: Add DELETE Body to client remove whitespaces
2016-04-05Merge branch 'legoscia/tls-dist-clean-shutdown/PR-962/OTP-13431'Ingela Anderton Andin
* legoscia/tls-dist-clean-shutdown/PR-962/OTP-13431: TLS distribution: shut down accept process cleanly
2016-04-04Merge tag 'OTP-18.3.1'Henrik Nord
=== OTP-18.3.1 === Changed Applications: - erts-7.3.1 - inets-6.2.1 - mnesia-4.13.4 Unchanged Applications: - asn1-4.0.2 - common_test-1.12 - compiler-6.0.3 - cosEvent-2.2 - cosEventDomain-1.2 - cosFileTransfer-1.2 - cosNotification-1.2.1 - cosProperty-1.2 - cosTime-1.2.1 - cosTransactions-1.3.1 - crypto-3.6.3 - debugger-4.1.2 - dialyzer-2.9 - diameter-1.11.2 - edoc-0.7.18 - eldap-1.2.1 - erl_docgen-0.4.2 - erl_interface-3.8.2 - et-1.5.1 - eunit-2.2.13 - gs-1.6 - hipe-3.15 - ic-4.4 - jinterface-1.6.1 - kernel-4.2 - megaco-3.18 - observer-2.1.2 - odbc-2.11.1 - orber-3.8.1 - os_mon-2.4 - ose-1.1 - otp_mibs-1.1 - parsetools-2.1.1 - percept-0.8.11 - public_key-1.1.1 - reltool-0.7 - runtime_tools-1.9.3 - sasl-2.7 - snmp-5.2.2 - ssh-4.2.2 - ssl-7.3 - stdlib-2.8 - syntax_tools-1.7 - test_server-3.10 - tools-2.8.3 - typer-0.9.10 - webtool-0.9.1 - wx-1.6.1 - xmerl-1.3.10 Conflicts: OTP_VERSION erts/emulator/test/save_calls_SUITE.erl erts/vsn.mk
2016-04-04Merge branch 'egil/os_mon/modernize-test'Björn-Egil Dahlberg
* egil/os_mon/modernize-test: Don't crash in end_per_testcase Eliminate use of doc and suite clauses Replace ?t:sleep/1 with ct:sleep/1 Replace use of test_server:format/2 with io:format/2 Eliminate use of test_server:fail/0,1 Eliminate use of ?config() macro Modernize use of timetraps Remove ?line macros
2016-04-04Handle multi-giga byte writes to filesBjörn Gustavsson
Test cases that write 4Gb to a file at once would fail on OS X and FreeBSD. By running a simple test program on OS X (El Capitan 10.11.4/Darwin 15.4.0), I found that writev() can handle more than 4Gb of data, while write() only can handle less than 2Gb. (Note that efile_drv.c will use write() if there is only one element in the io vector, and writev() if there is more than one.) It is tempting to attempt to piggy-back on the existing mechanism for segmenting write operations in efile_drv.c, but because of the complex code I find it too dangerous, both from a correctness and performance perspective. Instead do the change in unix_efile.c, which is considerably simpler.