Age | Commit message (Collapse) | Author |
|
OTP-10106
OTP-10107
|
|
|
|
|
|
|
|
|
|
* pg/fix-cover-leftover-down-msg:
[cover]fix leftover {'DOWN', ..} msg in callers queue
OTP-9694
|
|
Currently, the external fun syntax "fun M:F/A" only supports
literals. That is, "fun lists:reverse/1" is allowed but not
"fun M:F/A".
In many real-life situations, some or all of M, F, A are
not known until run-time, and one is forced to either use
the undocumented erlang:make_fun/3 BIF or to use a
"tuple fun" (which is deprecated).
EEP-23 suggests that the parser (erl_parse) should immediately
transform "fun M:F/A" to "erlang:make_fun(M, F, A)". We have
not followed that approach in this implementation, because we
want the abstract code to mirror the source code as closely
as possible, and we also consider erlang:make_fun/3 to
be an implementation detail that we might want to remove in
the future.
Instead, we will change the abstract format for "fun M:F/A" (in a way
that is not backwards compatible), and while we are at it, we will
move the translation from "fun M:F/A" to "erlang:make_fun(M, F, A)"
from sys_pre_expand down to the v3_core pass. We will also update
the debugger and xref to use the new format.
We did consider making the abstract format backward compatible if
no variables were used in the fun, but decided against it. Keeping
it backward compatible would mean that there would be different
abstract formats for the no-variable and variable case, and tools
would have to handle both formats, probably forever.
Reference: http://www.erlang.org/eeps/eep-0023.html
|
|
After stopping cover with cover:stop() there could still be a {'DOWN',...}
leftover message in the calling process's message queue.
This unexpected leftover could be eliminated if erlang:demonitor/2
with option flush would be used in certain points
|
|
|
|
|
|
File descriptors to import cover data are left opened.
When we export and import cover data many times,
leaked descriptors cause an error.
|
|
* ts/cover-with-export_all:
add user specified compiler options on form reloading
OTP-9204
|
|
* sb/make-files-like-erlc:
Change make:files to behave more like erlc
OTP-9179
|
|
|
|
Add write concurrancy to cover masters ?COVER_TABLE
|
|
|
|
|
|
with the bump info. This will make it faster to search the tables when analyzing and exporting data.
Also made cover export more parallel in how data is collected from the different nodes and also how data is read from ets. This should make the performance of cover much better on machines with multiple CPUs.
|
|
|
|
|
|
|
|
time. For each call a seperate process will be spawned to handle the request.
|
|
|
|
prevent memory usage explosion
|
|
Error caused by low resolution timers.
|
|
Option {sort, calls} now sorts on calls.
Option {sort, time } now sorts on time.
|
|
In order to be able to test non-exported functions from another (test) module
it is necessary to compile the specific module (at least during the test phase)
with the export_all compiler option. This allows complete separation of testing
and productive code. At the moment it is not possible to combine this with a
test code coverage using the cover module. The problem is that when cover
compiling a module using cover:compile_* the code is reloaded into the emulator
omitting/filtering the passed user options. In my example above the export_all
option would be removed and the non-exported functions cannot be called any
more.
|
|
|
|
When cover generates HTML files and embeds source code within them, it
does not escape ampersands in the source code. These bare ampersands
get misinterpreted by web browsers as HTML character-entity
references; as a result, source code containing ampersands renders
improperly. This small patch fixes the problem by causing bare
ampersands to be escaped into as "&" character-entity references.
|
|
* egil/eprof:
Fix eprof to handle error cases
Dialyzer cleanup for eprof
Fix fprof_SUITE to use new eprof API
Switch pattern API for eprof profile with mfa
Update eprof documentation
Update eprof_SUITE with more basic tests
Rename sorting choices for eprof
Teach eprof to align text output
Add dump functionality to eprof
Add log functionality to eprof
Update eprof tests to reflect new eprof
Add start timestamp to eprof profiling
Teach eprof to use the new breakpoints
OTP-8706 egil/eprof
eprof has been reimplemented with support in the Erlang virtual machine and
is now both faster (i.e. slows down the code being measured less) and
scales much better. In measurements we saw speed-ups compared to the old
eprof ranging from 6 times (for sequential code that only uses one
scheduler/core) up to 84 times (for parallel code that uses 8 cores).
|
|
|
|
|
|
|
|
- Added {sort, mfa} option
|
|
|
|
|
|
|
|
|
|
|
|
When given the option {builtins,true} Xref now adds calls to operators.
|
|
Currently make:files will fail with the atom 'error' and
no message when the input (.erl) file is unreadable or the
output (.beam) file is unwritable. This differs from erlc
which will print a useful error message, or when possible,
remove the unwritable output file and continue successfully.
This change removes the unnecessary checks on the files when
make:files is called and allows the error checking to be
done in compile:file, where the error messages are produced.
It does not affect the return value.
In particular this resolves the mysterious problem of make:files
failing but erlc succeeding, caused by an unwritable (usually
root owned) beam file in an otherwise writable build directory.
|
|
Xref has been updated to use the re module instead of the deprecated regexp
module.
|
|
A race condition affecting Cover has been removed.
|
|
|
|
* egil/lcnt:
Add test suite for lcnt in tools
Add lcnt:rt_opt/1 bindings to erts_debug
Add runtime option to enable/disable lcnt stats
Add auto width on string output
Add lcnt documentation
Add lock profiling tool
OTP-8424 Add lock profiling tool.
The Lock profiling tool, lcnt, can make use of the internal lock
statistics when the runtime system is built with this feature
enabled.
This provides a mechanism to examine potential lock bottlenecks
within the runtime itself.
- Add erts_debug:lock_counters({copy_save, bool()}). This option
enables or disables statistics saving for destroyed processes and
ets-tables. Enabling this might consume a lot of memory.
- Add id-numbering for lock classes which is otherwise undefined.
|
|
Runtime options for copy_save.
|
|
|
|
The Lock profiling tool, lcnt, can make use of the internal lock statistics
when the runtime system is built with this feature enabled.
This provides a mechanism to examine potential lock bottlenecks within
the runtime itself.
|
|
bug was introduced in R13B03. (Thanks to Matthew Sackman.)
|
|
|