aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2017-02-06Use magic refs in trapping processes()/ports() BIFsRickard Green
2017-02-06Use magic refs for NIF resourcesRickard Green
2017-02-06Implement magic referencesRickard Green
Magic references are *intentionally* indistinguishable from ordinary references for the Erlang software. Magic references do not change the language, and are intended as a pure runtime internal optimization. An ordinary reference is typically used as a key in some table. A magic reference has a direct pointer to a reference counted magic binary. This makes it possible to implement various things without having to do lookups in a table, but instead access the data directly. Besides very fast lookups this can also improve scalability by removing a potentially contended table. A couple of examples of planned future usage of magic references are ETS table identifiers, and BIF timer identifiers. Besides future optimizations using magic references it should also be possible to replace the exposed magic binary cludge with magic references. That is, magic binaries that are exposed as empty binaries to the Erlang software.
2017-02-06Implement erts_refc_inc_unless()Rickard Green
2017-02-06Merge branch 'maint'Rickard Green
* maint: Atomic reference count of binaries also in non-SMP Conflicts: erts/emulator/beam/erl_fun.c
2017-02-06Merge branch 'rickard/binary-refc' into maintRickard Green
OTP-14202 * rickard/binary-refc: Atomic reference count of binaries also in non-SMP Conflicts: erts/emulator/beam/beam_bp.c
2017-02-06Atomic reference count of binaries also in non-SMPRickard Green
NIF resources was not handled in a thread-safe manner in the runtime system without SMP support. As a consequence of this fix, the following driver functions are now thread-safe also in the runtime system without SMP support: - driver_free_binary() - driver_realloc_binary() - driver_binary_get_refc() - driver_binary_inc_refc() - driver_binary_dec_refc()
2017-02-06Merge branch 'maint'Hans Nilsson
2017-02-06Merge branch 'hans/ssh/cuddle_tests' into maintHans Nilsson
2017-02-06Merge branch 'maint'Rickard Green
* maint: Dirty schedulers should not touch scheduler data pointed to by process struct
2017-02-06Merge branch 'rickard/ds-fix' into maintRickard Green
OTP-14122 * rickard/ds-fix: Dirty schedulers should not touch scheduler data pointed to by process struct Conflicts: erts/emulator/beam/erl_process.c
2017-02-06Merge branch 'maint'Rickard Green
* maint: Use a hole-marker that cannot be mistaken for a valid term on the heap
2017-02-06Merge branch 'rickard/hole-marker' into maintRickard Green
* rickard/hole-marker: Use a hole-marker that cannot be mistaken for a valid term on the heap
2017-02-06Merge branch 'hm/escript-emulator'Rickard Green
OTP-14201 * hm/escript-emulator: escript: Handle symbolic link to a standalone escript
2017-02-06Update use of filename:find_src/1 in igor.erlRichard Carlsson
2017-02-06Update use of filename:find_src/1 in hipe.erlRichard Carlsson
2017-02-06Add shell shortcut for recompiling existing modulesRichard Carlsson
This extends the shell function c/1 and c/2 so that if the argument is a module name instead of a file name, it automatically locates the .beam file and the corresponding source file, and then recompiles the module using the same compiler options (plus any options passed to c/2). If compilation fails, the old beam file is preserved. Also adds c(Mod, Opts, Filter), where the Filter argument allows you to remove old compiler options before the new options are added.
2017-02-06Document the kernel source_search_rules parameterRichard Carlsson
2017-02-06Merge branch 'maint'Björn Gustavsson
* maint: Store messages for 'rex' and 'error_logger' off heap file: match enoent and enotdir in path_open
2017-02-06Merge pull request #1328 from bjorng/bjorn/kernel/off-heap-message/OTP-14142Björn Gustavsson
Store messages for 'rex' and 'error_logger' off heap OTP-14192
2017-02-06Merge pull request #1283 from pulitta/maintBjörn Gustavsson
file: match enoent and enotdir in path_open OTP-14191
2017-02-06Teach the ASN.1 compiler the 'maps' optionBjörn Gustavsson
When the 'maps' option is given, the SEQUENCE and SET types are represented as maps instead of as records. Optional and default values must be not be given as asn1_NOVALUE or asn1_DEFAULT in a map passed to the M:encode/2 function; they must be omitted from the map. Similarly, when decoding missing values will be omitted from the map. No .hrl files will be generated when the 'maps' options is used. That means values in an ASN.1 module must be retrieved by calling the appropriate function in generated module. Since we one day hope to get rid of the options 'compact_bit_string', 'legacy_bit_string', and 'legacy_erlang_types', we will not allow them to be combined with the 'maps' option.
2017-02-06Revert "ssh: removed 'ssh-dss' from default list"Hans Nilsson
This reverts commit 6847d9223420fb86cdf72f0e608a5f41a2673053. The removal of ssh-dss seems to give a too high risk of failing customer systems. Needs to be properly deprecated.
2017-02-06Merge branch 'hasse/dialyzer/memory_opt/OTP-14127'Hans Bolinder
* hasse/dialyzer/memory_opt/OTP-14127: dialyzer: Attempt to reduce memory consumption dialyzer: Do not spawn all workers at once dialyzer: Write PLT in subprocess dialyzer: Remove code for non-started workers dialyzer: Sort graphs topologically dialyzer: Compress some PLT tables dialyzer: Check return value of digrahp:add_edge() dialyzer: Use less memory for the PLT when analyzing typer: Fix a bug regarding the -T option dialyzer: Do not keep the code server's type info on the heap
2017-02-04Add filelib:find_file/2/3 and filelib:find_source/1/2/3Richard Carlsson
This moves, extends and exports functionality that previously existed only internally in filename:find_src/1/2, adding the ability to automatically substitute file suffixes and use different rules for different suffixes.
2017-02-04Refactor filename:find_src/1Richard Carlsson
2017-02-04Fix broken test for filename:find_src/2Richard Carlsson
2017-02-03ssh: use real groups in kex_gex test suiteHans Nilsson
2017-02-03Merge branch 'egil/20/erts/signal-service/OTP-14186'Björn-Egil Dahlberg
* egil/20/erts/signal-service/OTP-14186: kernel: Document signal server erts: Use os module instead of erts_internal for set_signal/2 erts: Do not handle SIGILL erts: Fix thread suspend in crashdump erts: Do not enable SIGINT erts: Use generic signal handler erts: Add OS signal tests erts: Handle SIGUSR1 via signal service instead erts: Handle SIGTERM via signal service instead kernel: Add gen_event signal server and default handler erts: Add SIGHUP signal handler erts: Remove whitespace errors Conflicts: erts/emulator/beam/bif.tab
2017-02-03ssh: logging in test lib for ssh testsHans Nilsson
2017-02-03dialyzer: Correct PLT testsHans Bolinder
Use explicit file names of PLTs so that daily builds&tests running simultaneously under the same user do not interfere with each other ("$HOME/.dialyzer_plt" is the default PLT name).
2017-02-03Use a hole-marker that cannot be mistaken for a valid term on the heapRickard Green
2017-02-03Merge branch 'hans/ssh/default_algo_list/OTP-14110'Hans Nilsson
2017-02-03Merge branch 'maint'Hans Nilsson
2017-02-03Merge branch 'hans/ssh/speed_dh_keygen/OTP-14169' into maintHans Nilsson
2017-02-03Refactor decoding as a preparation for handling mapsBjörn Gustavsson
2017-02-03Refactor encoding of optional valuesBjörn Gustavsson
As a preparation for supporting maps in a future commit, refactor the functions for encoding optional values.
2017-02-03Clean up filtering of optionsBjörn Gustavsson
2017-02-03Refactor code generation optionsBjörn Gustavsson
Most options to the code generation pass are passed through the process dictionary. At the same time, an Erule or Erules argument is passed to most code generation functions. The Erule argument is only an atom indicating the encoding rules ('ber', 'per', or 'uper'). Introduce a new record #gen{} to contain code generation options and parameters. Pass it as the Erule argument (renaming it to Gen in functions that we will have to touch anyway). In this commit, eliminate the use of the variable 'encoding_options' in the process dictionary.
2017-02-03Simplify gen_enc_components_call() and friendsBjörn Gustavsson
2017-02-03asn1ct_check: Number the components in INSTANCE OFBjörn Gustavsson
asn1ct_check numbers all components in SEQUENCEs and SETs, except for the associated sequence for INSTANCE OF. Remove this exception so that the code generation pass can depend on SEQUENCEs being numbered.
2017-02-03Refactor gen_encode_constructed_imm/3Björn Gustavsson
Introduce helper functions to simplify and reduce the size of gen_encode_constructed_imm/3.
2017-02-03Clean up handling of textual orderBjörn Gustavsson
The to_encoding_order/1 function can be eliminated if we incorporate its functionality into textual_order/2. textual_order/2 has a workaround for TermList being longer than OrderList. Remove the workaround, because the code being generated would certainly be wrong (better let the compiler crash and receive a bug report if it happens). The workaround was not necessary to successfully compile the entire Erlang/OTP and to run the asn1 test suite.
2017-02-03Break apart function with 6 argumentsBjörn Gustavsson
As a preparation for future changes, simplify gen_dec_constructed_imm_2/6 by breaking it apart to two functions.
2017-02-03Add additional tests of Extension Addition GroupsBjörn Gustavsson
2017-02-03Refactor h323test.erl to simplify debuggingBjörn Gustavsson
2017-02-03testMultipleLevels: Use asn1_test_lib:roundtrip()Björn Gustavsson
2017-02-03Correct spelling of NBAP-PDU-DescriptionsBjörn Gustavsson
2017-02-03Store messages for 'rex' and 'error_logger' off heapBjörn Gustavsson
Performance for processes that receive huge amounts of messages can be increased by storing the incoming messages outside the heap (that avoids copying the message in a garbage collection). Two OTP processes that are known to receive many messages are 'rex' (used by 'rpc') and 'error_logger'.
2017-02-03Merge branch 'maint'Hans Bolinder
* maint: dialyzer: Fix a Dialyzer warning