v8/test/unittests
jgruber b42415402f [coverage] Block coverage with support for IfStatements
This CL implements general infrastructure for block coverage together with
initial support for if-statements.

Coverage output can be generated in lcov format by d8 as follows:

$ d8 --block-coverage --lcov=$(echo ~/simple-if.lcov) ~/simple-if.js
$ genhtml ~/simple-if.lcov -o ~/simple-if
$ chrome ~/simple-if/index.html

A high level overview of the implementation follows:

The parser now collects source ranges unconditionally for relevant AST nodes.
Memory overhead is very low and this seemed like the cleanest and simplest
alternative.

Bytecode generation uses these ranges to allocate coverage slots and insert
IncBlockCounter instructions (e.g. at the beginning of then- and else blocks
for if-statements). The slot-range mapping is generated here and passed on
through CompilationInfo, and is later accessible through the
SharedFunctionInfo.

The IncBlockCounter bytecode fetches the slot-range mapping (called
CoverageInfo) from the shared function info and simply increments the counter.
We don't collect native-context-specific counts as they are irrelevant to our
use-cases.

Coverage information is finally generated on-demand through Coverage::Collect.
The only current consumer is a d8 front-end with lcov-style output, but the
short-term goal is to expose this through the inspector protocol.

BUG=v8:6000
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_chromium_rel_ng

Review-Url: https://codereview.chromium.org/2882973002
Cr-Commit-Position: refs/heads/master@{#45737}
2017-06-06 15:44:55 +00:00
..
api Never freeze/seal/preventExtensions objects with interceptors 2017-03-29 13:04:58 +00:00
asmjs [asm.js] Move two unittests into the correct place. 2017-05-09 13:18:05 +00:00
base [base] Fix integer check in CHECK/DCHECK macros 2017-05-12 09:39:48 +00:00
compiler [builtins] Begin removing CodeFactory accessors 2017-05-31 12:40:13 +00:00
compiler-dispatcher [cleanup] Remove return after UNREACHABLE 2017-05-22 13:10:01 +00:00
heap [heap] Make SetRange and ClearRange operations of Bitmap thread-safe. 2017-06-06 13:26:45 +00:00
interpreter [coverage] Block coverage with support for IfStatements 2017-06-06 15:44:55 +00:00
libplatform Make idle tasks optional in the default platform. 2017-03-07 13:37:41 +00:00
parser [parser] Move newly added cctest/test-parsing/LazyFunctionLength to unittests. 2017-04-18 14:27:32 +00:00
wasm [wasm] Make prototype flags experimental 2017-05-31 14:18:08 +00:00
zone [heap] Simplify and linearly scale ResourceConstraints::ConfigureDefaults. 2017-05-23 17:00:57 +00:00
BUILD.gn Replace sanitizers:deps with exe_and_shlib_deps (v8) 2017-05-19 21:52:47 +00:00
cancelable-tasks-unittest.cc Implement async AbortAll for the compiler dispatcher 2017-01-04 13:45:56 +00:00
char-predicates-unittest.cc [intl] Reorganize code 2017-04-24 13:54:15 +00:00
counters-unittest.cc [counters] RuntimeStats: fix wrong bookkeeping when dynamically changing counters 2016-11-24 10:05:37 +00:00
DEPS Move unit tests to test/unittests. 2014-10-01 08:34:25 +00:00
eh-frame-iterator-unittest.cc [turbofan] Fix more -Wsign-compare warnings. 2016-11-11 12:01:08 +00:00
eh-frame-writer-unittest.cc [turbofan] Fix more -Wsign-compare warnings. 2016-11-11 12:01:08 +00:00
locked-queue-unittest.cc Add lock-based unbounded queue 2015-11-18 10:54:13 +00:00
object-unittest.cc Fix HashTable growth strategy to be 2x instead of 4x 2017-04-21 17:31:29 +00:00
register-configuration-unittest.cc [Turbofan] Add concept of FP register aliasing on ARM 32. 2016-10-26 16:04:33 +00:00
run-all-unittests.cc Make idle tasks optional in the default platform. 2017-03-07 13:37:41 +00:00
source-position-table-unittest.cc This CL enables precise source positions for all V8 compilers. It merges compiler::SourcePosition and internal::SourcePosition to a single class used throughout the codebase. The new internal::SourcePosition instances store an id identifying an inlined function in addition to a script offset. 2016-11-14 17:22:32 +00:00
test-helpers.cc [parser] Move newly added cctest/test-parsing/LazyFunctionLength to unittests. 2017-04-18 14:27:32 +00:00
test-helpers.h [parser] Move newly added cctest/test-parsing/LazyFunctionLength to unittests. 2017-04-18 14:27:32 +00:00
test-utils.cc Disable other background modules while testing the CompilerDispatcher 2017-03-14 14:01:03 +00:00
test-utils.h Disable other background modules while testing the CompilerDispatcher 2017-03-14 14:01:03 +00:00
unicode-unittest.cc Fix out-of-range access in unibrow::Utf8::CalculateValue. 2016-11-22 09:27:59 +00:00
unittests.gyp [GYP] Move builtins generation into mksnapshot 2017-05-19 22:11:16 +00:00
unittests.isolate Reland [swarming] Isolate v8 testing. 2015-10-05 09:48:42 +00:00
unittests.status [asm.js] Widen test coverage to cctest and friends. 2017-03-28 08:00:40 +00:00
value-serializer-unittest.cc Fix compilation failure due to overload of virtual function 2017-05-24 21:19:48 +00:00