aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2016-05-04Correctly handle multiple load attempts when on_load is pendingBjörn Gustavsson
If an on_load function had not yet returned, the code server would only correctly handle calls to code:ensure_loaded/1. That is, each process that called code:ensured_loaded/1 for the module in question would be suspended until the on_load function had returned. The code server handled calls to code:load_binary/1, code:load_file/1, and code:load_abs/1 in the same way as for code:ensure_loaded/1. That means that if call to one those functions attempted to load *different* code for the module, that code would not get loaded. Note that code:finish_loading/1 (code:atomic_load/1) will still return {error,pending_on_load} if there is a pending on_load function for one of the modules that are about to be loaded. The reason is that code:finish_loading/1 is meant to either succeed directly, or fail quickly if there is any problem.
2016-05-04Avoid deadlock when an on_load function makes an external call to the module ↵Björn Gustavsson
itself
2016-05-04code_server: Eliminate unnecessary Tag in handle_call/3Björn Gustavsson
For historical reasons, the second argument in handle_call/3 is {Pid,Tag}. The tag is always 'call' and is never used.
2016-05-04Reimplement -on_load()Björn Gustavsson
Load the module as old code; swap old and new code if the -on_load function succeeds. That way, a failed update attempt for a module that has an -on_load function will preserve the previous version of the code.
2016-05-02Refactor erts_finish_loading() and insert_new_code()Björn Gustavsson
As a preparation for fixing some issues with -on_load(), we will integrate insert_new_code() into erts_finish_loading. Also rename insert_new_code() to stub_insert_new_code() to make it clear that it will only be used when making a stub module
2016-05-02code_SUITE: Make on_load_binary/1 clearer by using merlBjörn Gustavsson
2016-05-02Update primary bootstrapBjörn Gustavsson
2016-05-02Merge branch 'bjorn/kernel/clean-up-code_server'Björn Gustavsson
* bjorn/kernel/clean-up-code_server: Introduce is_dir/1 to test for a directory Introduce split_base/1 to split into name and version string Eliminate one call to filename:split/1 Refactor get_name/1 Clean up make_path() Avoid calling absname/1 on an absolute path Clean up processing of archive files Simplify and speed up del_ebin/1 code_SUITE: Enhance test of archive files
2016-04-30Introduce is_dir/1 to test for a directoryBjörn Gustavsson
2016-04-30Introduce split_base/1 to split into name and version stringBjörn Gustavsson
2016-04-29Merge branch 'egil/erts/tracing-support-lttng/OTP-13532'Björn-Egil Dahlberg
* egil/erts/tracing-support-lttng/OTP-13532: (28 commits) runtime_tools: User's guide to LTTng and dyntrace runtime_tools: Fix Dtrace build erts: Fix gc messages in tracer_SUITE erts: Fix gc messages in sensitive_SUITE erts: Fix gc messages in trace_port_SUITE tools: Update fprof tests tools: Update fprof with new gc traces runtime_tools: Update dyntrace_lttng_SUITE tests runtime_tools: Add 'return_to' for call tracing erts: Fix return_to trace callback erts: Update erl_tracer documentation erts: Fix erl_tracer documentation typos Update preloaded erl_tracer.beam erts: Update erl_tracer type specs runtime_tools: Add lttng dyntrace tests runtime_tools: Extend 'trace' and 'enabled' tracer callbacks erts: Extend 'enabled' and 'trace' tracer callbacks runtime_tools: Extend 'enabled' tracer callbacks erts: Extend 'enabled' tracer callbacks runtime_tools: Update lttng garbage collection trace ...
2016-04-29runtime_tools: User's guide to LTTng and dyntraceBjörn-Egil Dahlberg
2016-04-29runtime_tools: Fix Dtrace buildBjörn-Egil Dahlberg
2016-04-29erts: Fix gc messages in tracer_SUITEBjörn-Egil Dahlberg
2016-04-29erts: Fix gc messages in sensitive_SUITEBjörn-Egil Dahlberg
2016-04-29erts: Fix gc messages in trace_port_SUITEBjörn-Egil Dahlberg
2016-04-29tools: Update fprof testsBjörn-Egil Dahlberg
2016-04-29tools: Update fprof with new gc tracesBjörn-Egil Dahlberg
2016-04-29runtime_tools: Update dyntrace_lttng_SUITE testsBjörn-Egil Dahlberg
2016-04-29runtime_tools: Add 'return_to' for call tracingBjörn-Egil Dahlberg
2016-04-29erts: Fix return_to trace callbackBjörn-Egil Dahlberg
2016-04-29erts: Update erl_tracer documentationBjörn-Egil Dahlberg
2016-04-29erts: Fix erl_tracer documentation typosBjörn-Egil Dahlberg
2016-04-29Update preloaded erl_tracer.beamBjörn-Egil Dahlberg
2016-04-29erts: Update erl_tracer type specsBjörn-Egil Dahlberg
2016-04-29runtime_tools: Add lttng dyntrace testsBjörn-Egil Dahlberg
2016-04-29runtime_tools: Extend 'trace' and 'enabled' tracer callbacksBjörn-Egil Dahlberg
Adds the following capabilities to dyntrace * enabled_running_ports/3 * enabled_running_procs/3 changed from enabled_running/3 * trace_running_ports/6 * trace_running_procs/6 changed from trace_running/6
2016-04-29erts: Extend 'enabled' and 'trace' tracer callbacksBjörn-Egil Dahlberg
Adds the following capabilities to a tracer backend * enabled_running_procs/3 changed from enabled_running/3 * enabled_running_ports/3 * trace_running_procs/6 changed from trace_running/6 * trace_running_ports/6
2016-04-29runtime_tools: Extend 'enabled' tracer callbacksBjörn-Egil Dahlberg
Adds the following capabilities to dyntrace * enabled_procs/3 * enabled_ports/3 * enabled_running/3 * enabled_call/3 * enabled_send/3 * enabled_receive/3 * enabled_garbage_collection/3
2016-04-29erts: Extend 'enabled' tracer callbacksBjörn-Egil Dahlberg
Adds the following capabilities to a tracer backend * enabled_procs/3 * enabled_ports/3 * enabled_running/3 * enabled_call/3 * enabled_send/3 * enabled_receive/3 * enabled_garbage_collection/3 These functions will fall back to enabled/3 if not provided and the tracepoint is active.
2016-04-29runtime_tools: Update lttng garbage collection traceBjörn-Egil Dahlberg
2016-04-29erts: Extend garbage collection traceBjörn-Egil Dahlberg
Replace 'gc_start' and 'gc_end' with * 'gc_minor_start' * 'gc_minor_end' * 'gc_major_start' * 'gc_major_end'
2016-04-29runtime_tools: Add lttng 'call' tracingBjörn-Egil Dahlberg
2016-04-29runtime_tools: Add lttng 'ports' tracingBjörn-Egil Dahlberg
2016-04-29runtime_tools: Add lttng 'send' and 'receive' tracingBjörn-Egil Dahlberg
2016-04-29runtime_tools: Add lttng 'running' tracingBjörn-Egil Dahlberg
2016-04-29runtime_tools: Add lttng 'procs' tracingBjörn-Egil Dahlberg
2016-04-29runtime_tools: Add lttng 'garbage_collection' tracingBjörn-Egil Dahlberg
2016-04-29Merge branch 'mikpe/fp-exceptions-cleanups/PR-1019/OTP-13531'Lukas Larsson
* mikpe/fp-exceptions-cleanups/PR-1019/OTP-13531: clean up FP exception code in sys_float.c
2016-04-29Merge branch 'mikpe/fp-exceptions-neuter-matherr/PR-1018/OTP-13531'Lukas Larsson
* mikpe/fp-exceptions-neuter-matherr/PR-1018/OTP-13531: matherr() must not fake an FP exception
2016-04-29Merge branch 'sverk/big-external-creations.OTP-13488'Sverker Eriksson
second merge of this branch with some bug fixing
2016-04-29Merge branch 'hasse/dialyzer_fix_from_form/OTP-13520'Hans Bolinder
* hasse/dialyzer_fix_from_form/OTP-13520: dialyzer: Fix a bug in the translation of forms to types
2016-04-29dialyzer: Fix a bug in the translation of forms to typesHans Bolinder
A bug is fixed, but there are more problems. Modify erl_types.erl like this: -define(EXPAND_LIMIT, 500). and bogus warnings are output (again). Callbacks and specs are compared (subtype) in dialyzer_behaviour. If they are expanded to different depths, then invalid warnings can be generated.
2016-04-29Eliminate one call to filename:split/1Björn Gustavsson
2016-04-29Refactor get_name/1Björn Gustavsson
Refactor get_name/1 to facilitate an optimization in the next commit.
2016-04-29Merge branch 'sverker/hipe/remove-ct_hooks'Sverker Eriksson
2016-04-29Clean up make_path()Björn Gustavsson
make_path() returns a tuple whose second element is not used by any of its caller. Eliminate the tuple. Also avoid calling filename:dirname/1 when we already have the result stored in a variable, and avoid calling filename:basename/2 on a complete path when we already have the last part of the pathname stored in a variable.
2016-04-29Avoid calling absname/1 on an absolute pathBjörn Gustavsson
absname/1 is quite expensive, so we should not call if we already have a normalized absolute path.
2016-04-29Clean up processing of archive filesBjörn Gustavsson
The same filtering of sub directories is done in archive_subdirs/1 and try_archive_subdirs/1. Actually, archive_subdirs/1 does nothing useful. It can be removed and all_archive_subdirs/1 can be renamed to archive_subdirs/1. In try_archive_subdirs/1, we can also replace filename:join/1 with the cheaper filename:append/1, since we know that pathnames have already been normalized.
2016-04-29Simplify and speed up del_ebin/1Björn Gustavsson
It is faster and easier to use filename:split/1 and filename:join/1 than use four different 'filename' operations. Each call in the original call first flattens the input list, and then traverse the entire string to the end. So there are roughly 8 complete traversals. In comparison, filename:split/1 will traverse the input string twice (once to flatten, once to split) and filename:join/1 once. For background on why this optimization is worthwhile, here is the result of profiling the start-up of the run-time system on my computer (done before this optimization): $ $ERL_TOP/bin/erl -profile_boot . . . filename:join1/4 - 13573 : 13805 us erlang:finish_loading/1 - 27 : 19963 us filename:do_flatten/2 - 29337 : 49518 us erlang:prepare_loading/2 - 49 : 52270 us Note that filename:do_flatten/2 ends up in second place, almost as expensive as erlang:prepare_loading/2. Your mileage may vary, depending on the length of $ERL_TOP and the number of extra directories added to the path using $ERL_LIBS.