Age | Commit message (Collapse) | Author |
|
Use `counters:add/3` instead of `ets:update_counter/3`
for counting the number of times a line is executed.
By default, the reference to the counter array for each module will be
stored in a persistent term and retrieved every time a counter is
updated. This makes the compiler test suite with coverage enabled run
*almost* twice as fast (on my computer, in about 6 minutes down from
more than 11 minutes).
To get even more speed, the new `cover:local_only/0` function can be
called to put cover into a mode where the cover-compiled code can only
be run on the local node. In this mode, the cover-compiled modules in
a more efficient way by compiling the counter reference into the
code. This shaves off about one more minute, making the compiler test
suite with coverage enabled run *more than* twice as fast (in about 5
minutes on my computer).
|
|
|
|
Prior to PR#1807, uncovered lines could be found by searching for "
0.." in the HTML page generated by cover:analyse_to_file/1,2. The pull
request removed the two dots after the number of hits, which makes it
much harder to find the uncovered lines.
This commit introduces a sad face, :-( , instead of the single 0
character, which should make the search easier.
|
|
|
|
This will make it easier to send links to other people.
|
|
add missing tags too
|
|
|
|
|
|
|
|
Improve Cover HTML page
OTP-15213
|
|
* Adapt diff colors to bring more contrast
* Use monospace font for all the code in cover HTML report
* Specify background color for the body as white
* Reduce font-size for header
* Install cover stylesheet when making release (@sirihansen made this improvement)
* Additional changes based on feedback
|
|
|
|
|
|
This makes the nightly tests slightly more stable as they assert
that the server isn't alive when lcnt:start/0 is called, which it
could still be since the stop command was a plain gen_server call
that didn't wait until the termination was completed.
|
|
This commit replaces the old memory instrumentation with a new
implementation that scans carriers instead of wrapping
erts_alloc/erts_free. The old implementation could not extract
information without halting the emulator, had considerable runtime
overhead, and the memory maps it produced were noisy and lacked
critical information.
Since the new implementation walks through existing data structures
there's no longer a need to start the emulator with special flags to
get information about carrier utilization/fragmentation. Memory
fragmentation is also easier to diagnose as it's presented on a
per-carrier basis which eliminates the need to account for "holes"
between mmap segments.
To help track allocations, each allocation can now be tagged with
what it is and who allocated it at the cost of one extra word per
allocation. This is controlled on a per-allocator basis with the
+M<S>atags option, and is enabled by default for binary_alloc and
driver_alloc (which is also used by NIFs).
|
|
|
|
|
|
|
|
lcnt:collect is documented as implicitly starting the lcnt server
but didn't do so prior to this commit. I've decided to extend this
behavior to all operations as the overhead is negligible and it's
a bit more convenient to use.
|
|
|
|
* maint:
tools: Correct a counting bug in Cover
|
|
See also PR #1641, https://github.com/erlang/otp/pull/1641.
The bug was introduced in commit ab435488a (Erlang/OTP 18).
|
|
* maint:
fprof: Make sure the receiving file can handle Unicode
|
|
* hasse/tools/fprof_unicode_fix:
fprof: Make sure the receiving file can handle Unicode
|
|
* maint:
erts, stdlib: Fix xmllint warning
Update runtime deps to depend on new stdlib functionality
|
|
It is assumed that I/O devices can handle character codes greater
than 255.
|
|
~tw and new string functions are new since OTP-20 (stdlib-3.4)
|
|
* siri/string-new-api: (28 commits)
hipe (test): Do not use deprecated functions in string(3)
dialyzer (test): Do not use deprecated functions in string(3)
eunit (test): Do not use deprecated functions in string(3)
system (test): Do not use deprecated functions in string(3)
system (test): Do not use deprecated functions in string(3)
mnesia (test): Do not use deprecated functions in string(3)
Deprecate old string functions
observer: Do not use deprecated functions in string(3)
common_test: Do not use deprecated functions in string(3)
eldap: Do not use deprecated functions in string(3)
et: Do not use deprecated functions in string(3)
os_mon: Do not use deprecated functions in string(3)
debugger: Do not use deprecated functions in string(3)
runtime_tools: Do not use deprecated functions in string(3)
asn1: Do not use deprecated functions in string(3)
compiler: Do not use deprecated functions in string(3)
sasl: Do not use deprecated functions in string(3)
reltool: Do not use deprecated functions in string(3)
kernel: Do not use deprecated functions in string(3)
hipe: Do not use deprecated functions in string(3)
...
Conflicts:
lib/eunit/src/eunit_lib.erl
lib/observer/src/crashdump_viewer.erl
lib/reltool/src/reltool_target.erl
|
|
|
|
The updates of xref_base:analysis() are cosmetic (the strings are
parsed by the Erlang scanner only).
|
|
It's not clear to me if the receiving file always can handle
characters codes greater than 255.
|
|
|
|
When sampling multiple processes and analyzing with totals true sum
together all caller and callee entries which concerns the same
function. Previous behaviour was to report each contributing entry.
|
|
|
|
fprof: Sum callers and callees
|
|
* john/erts/runtime-lcnt:
Document rt_mask and add warnings about copy_save
Add an emulator test suite for lock counting
Break erts_debug:lock_counters/1 into separate BIFs
Allow toggling lock counting at runtime
Move lock flags to a common header
Enable register_SUITE for lcnt builds
Enable lcnt smoke test on all builds that have lcnt enabled
Make lock counter info independent of the locks being counted
OTP-14412
OTP-13170
OTP-14413
|
|
|
|
When sampling multiple processes and analyzing with totals true sum
together all caller and callee entries which concerns the same
function. Previous behaviour was to report each contributing entry.
|
|
|
|
|
|
And use correct encoding when printing to files.
|
|
|
|
AGAIN
* sverker/remove-latin1-atom-encoding:
tools: Fix more assumptions in lcnt about external format
|
|
Also tried to prepare for large creation.
|
|
* siri/make/include-path/ERL-395/OTP-14339:
[tools/make] Add current directory to include path
|
|
* sverker/remove-latin1-atom-encoding:
kernel: Fix erl_distribution_wb_SUITE:whitebox
kernel: Remove pg2_SUITE:compat
erts: Remove fun_r13_SUITE
stdlib: Remove test cases for R12 io protocol
kernel: Make DFLAG_UTF8_ATOMS mandatory
kernel: Rewrite distribution flag verification
tools: Update assumptions in lcnt about external atom format
stdlib: Tweak beam_lib_SUITE whitebox assumptions
orber: Remove hard dependency to external atom format
kernel: Try mend disk_log whitebox tests
erts: Mark latin1 atom encoding as deprecated
jinterface: Do not generate atoms on old latin1 external format
erl_interface: Do not generate atoms on old latin1 ext format
erts: Do not generate atoms on old latin1 external format
erts: Fix faulty ASSERT for failed dec_term
|
|
This is to ensure that files are recompiled if a .hrl file in the
current directory is changed.
|
|
Commit d8ff1e3 removed cover_web and therefore
tools no longer depends on inets.
|
|
|
|
This allows build scripts to use emake without needing to generate
an Emakefile before running make:all/0,1 or make:file/1,2.
|