aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2017-02-06Use magic refs for maps merge trap contextRickard Green
2017-02-06Use magic refs binary_to_term/term_to_binary trap contextRickard Green
2017-02-06Use magic refs for distributed send trap contextRickard Green
2017-02-06Use magic refs for unicode static NIFs trapsRickard Green
2017-02-06Use magic refs for binary compile patternsRickard Green
2017-02-06Use magic refs for list_to_binary/binary_to_list trapsRickard Green
2017-02-06Use magic refs for compiled match specsRickard Green
2017-02-06Use magic refs for re:run() static NIFs trapRickard Green
2017-02-06Use magic refs for code loading stateRickard Green
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.