aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2010-05-11Test that gen_server:call/2,3 are fast even with a huge message queueBjörn Gustavsson
2010-05-11erts: Add tests for the receive optimizationBjörn Gustavsson
2010-05-11Update primary bootstrapBjörn Gustavsson
2010-05-11erts: Implement recv_mark/1 and recv_set/1 for realBjörn Gustavsson
The recv_mark/1 instruction will both save the current position in the message queue and a mark (the address of the loop_rec/2 instruction just following the recv_set/1 instruction). The recv_mark/1 instruction will only use the saved position if the mark is correct. The reason for saving and verifying the mark is that the compiler does not need to guarantee that no other receive instruction can be executed in between the recv_mark/1 and recv_set/1 instructions (the mark will be cleared by the remove_message/0 instruction when a message is removed from the message queue). That means that arbitrary function calls in between those instruction can be allowed.
2010-05-11compiler tests: Cover the error handling code in beam_receiveBjörn Gustavsson
2010-05-11compiler test: Test optimization of receive statementsBjörn Gustavsson
We don't attempt to run the generated code, but use beam_disasm and check for the presence or absence (as appropriate) of the recv_mark/1 and recv_set/1 instructions.
2010-05-11Optimize selective receives in the presence of a large message queueBjörn Gustavsson
If a gen_server process has many messages in its message queue and calls another gen_server process, the selective receive in gen_server:call() will have to go through the entire message queue. Have the compiler generate the new mark_recv/1 and mark_recv/1 instructions that can avoid going through the entire message queue.
2010-05-11Introduce the new recv_mark/1 and recv_mark/1 instructionsBjörn Gustavsson
Make the recv_mark/1 and recv_mark/1 instructions known to the compiler and run-time system. For the moment, make the loader ignore any occurrences of those instructions in BEAM files. Also update hipe_beam_to_icode to ignore those instructions.
2010-05-11Compile tests that communicate with R12 nodes with the r12 optionBjörn Gustavsson
R12 nodes cannot load code that use the optimized receive that we are about to implement.
2010-05-10Move p_run/2 to test_libBjörn Gustavsson
It can be useful for other test suites.
2010-05-10gen: Inline wait_resp_mon/2 to help the compiler optimizeBjörn Gustavsson
We are about to introduce a new optimization that requires the creation of a monitor and the following receive statement to be in the same function.
2010-05-10Update bootstrap compilerBjörn Gustavsson
2010-05-10Merge branch 'ks/syntax_tools' into devErlang/OTP
* ks/syntax_tools: Fix an erroneous spec
2010-05-10Merge branch 'ms/epmd-error-checking' into devErlang/OTP
* ms/epmd-error-checking: Exit if an error occurs with the listening socket OTP-8618 ms/epmd-error-checking The empd program could loop and consume 100% CPU time if an unexpected error ocurred in listen() or accept(). Now epmd will terminate if a non-recoverable error occurs. (Thanks to Michael Santos.)
2010-05-06Fix an erroneous specKostis Sagonas
While at it, take out redundant code.
2010-05-06Merge branch 'sv/sasl-fix-get_status' into devErlang/OTP
* sv/sasl-fix-get_status: Prepare patch release fix sys:get_status backward compatibility for sasl release_handler_1 OTP-8619 sv/sasl-fix-get_status In R13B04 sys:get_status was modified to invoke format_status/2 in the callback module if the module exports that function. This resulted in a change to the term returned from calling sys:get_status on the supervisor module, since supervisor is a gen_server and gen_server exports format_status. The sasl release_handler_1 module had a dependency on the pre-R13B04 term returned by sys:get_status when invoked on a supervisor, so the R13B04 change broke that dependency. This problem has been fixed by change release_handler_1 to handle both the pre-R13B04 and R13B04 terms that sys:get_status can return from a supervisor.
2010-05-06Merge branch 'bg/file-del_dir' into devErlang/OTP
* bg/file-del_dir: Adjust test of file:del_dir("..") to accept {error,einval}
2010-05-06OTP-8563: Decode/Encode of Counter64 errorMicael Karlberg
OTP-8574: Option to allow invalid row OIDs OTP-8594: Make snmp forward compatible with new crypto OTP-8595: snmpc fails to compile BITS with "holes"
2010-05-05Adjust test of file:del_dir("..") to accept {error,einval}Björn Gustavsson
On FreeBSD, file:del_dir("..") will return {error,einval} rather than the expected {error,eexist}, and so will file:del_dir("../.."), and so on. It could be argued that we should change the implementation of file:del_dir/1 to remap the error code (as some other error codes are remapped to reduce the differences between different platforms), but the consistency gained does not seem to be worth the effort. Therefore, until we'll find a real-world use case where it is essential to have consistent error codes for file:del_dir("..") on all platforms, change the test case to accept both errors.
2010-05-05OTP-8581 Revert prototype of driver_asyncPatrik Nyblom
2010-05-05Prepare patch releaseBjörn Gustavsson
2010-05-05fix sys:get_status backward compatibility for sasl release_handler_1Steve Vinoski
In R13B04 sys:get_status was modified to invoke format_status/2 in the callback module if the module exports that function. This resulted in a change to the term returned from calling sys:get_status on the supervisor module, since supervisor is a gen_server and gen_server exports format_status. The sasl release_handler_1 module had a dependency on the pre-R13B04 term returned by sys:get_status when invoked on a supervisor, so the R13B04 change broke that dependency. Change release_handler_1 to handle both the pre-R13B04 and R13B04 terms that sys:get_status can return from a supervisor.
2010-05-04Merge branch 'rd/erlang-eunit' into devErlang/OTP
* rd/erlang-eunit: erlang-eunit.el: Require cl, as it is used
2010-05-04Merge branch 'ms/inet_gethost-safe-debug-output' into devErlang/OTP
* ms/inet_gethost-safe-debug-output: Truncate debug messages OTP-8615 ms/inet_gethost-safe-debug-output
2010-05-04Merge branch 'sv/env-with-equal-sign' into devErlang/OTP
* sv/env-with-equal-sign: allow open_port to set env vars containing a trailing '=' character OTP-8614 sv/env-with-equal-sign The erlang:open_port spawn and spawn_executable directives can include an {env,Env} directive to set up environment variables for the spawned process. A bug prevented applications from using {env,Env} to set an environment variable whose value ended with a '=' (equal sign) character; the trailing equal sign was mistaken as an indication that an environment variable was to be cleared from the environment of the spawned process. (Thanks to Steve Vinoski.)
2010-05-03Add type info for erlang:load_nif/2Kostis Sagonas
2010-05-03Truncate debug messagesMichael Santos
When the undocumented ERL_INET_GETHOST_DEBUG environment variable is set to 5, very long hostnames can overflow the buffer used to construct the debug message. Truncate debug messages if they exceed the size of the buffer. export ERL_INET_GETHOST_DEBUG=5 inet:gethostbyname(lists:duplicate(5000,"x")).
2010-05-03allow open_port to set env vars containing a trailing '=' characterSteve Vinoski
The erlang:open_port spawn and spawn_executable directives can include an {env, Env} directive to set up environment variables for the spawned process. A bug in ert/emulator/sys/unix/sys.c prevented applications from using {env, Env} to set an environment variable whose value ended with a '=' (equal sign) character; the code mistook the trailing equal sign as an indication that an environment variable was to be cleared from the environment of the spawned process. For example, passing an {env, Env} of {env, [{"foo", "bar="}]} would result in the code in sys.c seeing a string of the form "foo=bar=" The code would see the final '=' character and assume the directive wanted to clear a variable named "foo=bar" from the environment of the spawned process, rather than seeing it as a directive to set the environment variable "foo" to the value "bar=". Fix this problem and add a new regression test for it to the port test suite.
2010-05-03Exit if an error occurs with the listening socketMichael Santos
Check errno if either select() or accept() returns an error and exit. This prevents epmd from looping and taking up 100% CPU.
2010-05-02Merge branch 'bg/remove-stray-ose-support' into devErlang/OTP
* bg/remove-stray-ose-support: configure: Remove stray OSE/Delta support Makefiles: Remove stray OSE/Delta support kernel tests: Remove stray OSE/Delta support system tests: Remove stray OSE/Delta support erl_interface tests: Remove stray OSE/Delta support epmd: Remove stray OSE/Delta support epmd: #ifdef out start_epmd() for other platforms than VxWorks emulator tests: Remove stray OSE/Delta support emulator: Remove stray OSE/Delta support emulator: Eliminate #ifdef for sys_tty_reset() test_server: Remove stray support for OSE/Delta OTP-8585 bg/remove-stray-ose-support
2010-04-30Fix mispelled type name in spec for ets:to_dets/2Björn Gustavsson
2010-04-30configure: Remove stray OSE/Delta supportBjörn Gustavsson
2010-04-30Makefiles: Remove stray OSE/Delta supportBjörn Gustavsson
2010-04-30kernel tests: Remove stray OSE/Delta supportBjörn Gustavsson
2010-04-30system tests: Remove stray OSE/Delta supportBjörn Gustavsson
2010-04-30erl_interface tests: Remove stray OSE/Delta supportBjörn Gustavsson
2010-04-30epmd: Remove stray OSE/Delta supportBjörn Gustavsson
2010-04-30epmd: #ifdef out start_epmd() for other platforms than VxWorksBjörn Gustavsson
There is no reason to define a function that is never used.
2010-04-30emulator tests: Remove stray OSE/Delta supportBjörn Gustavsson
2010-04-30emulator: Remove stray OSE/Delta supportBjörn Gustavsson
2010-04-30emulator: Eliminate #ifdef for sys_tty_reset()Björn Gustavsson
In the erts/emulator/beam sources #ifdef SOME_OPERATING_SYSTEM should be avoided. Instead, call a function implemented in sys/OPERATING_SYSTEM/sys.c.
2010-04-30test_server: Remove stray support for OSE/DeltaBjörn Gustavsson
Remove code supporting testing on OSE/Delta. Some cross-testing support only used by OSE/Delta is kept (see the mention of OSE in test_server_internal.hrl), because it could presumably be useful in the future if we are to test some other embedded system.
2010-04-29Merge branch 'ks/kernel' into devErlang/OTP
* ks/kernel: kernel: Clean up as suggested by tidier OTP-8606 ks/kernel
2010-04-29Started to prepare for next versionIngela Anderton Andin
2010-04-29OTP-8588 Alert and packet handling improvmentIngela Anderton Andin
Alert handling has been improved to better handle unexpected but valid messages and the implementation is also changed to avoid timing related issues that could cause different error messages depending on network latency. Packet handling was sort of broken but would mostly work as expected when socket was in binary mode. This has now been fixed.
2010-04-28OTP-8542: HTTP client memory leakMicael Karlberg
OTP-8607: https default port not handled
2010-04-28OTP-8333 Crypto using NIF'sSverker Eriksson
crypto application changed to use NIFs instead of driver.
2010-04-28OTP-8591 Race in mseg cashe on non-SMP with async threadsSverker Eriksson
Fix memory management bug causing crash of non-SMP emulator with async threads enabled. The bug did first appear in R13B03.
2010-04-28OTP-8474 NIF improvements after R13B04Sverker Eriksson
New NIF API function enif_make_new_binary
2010-04-28kernel: Clean up as suggested by tidierKostis Sagonas