v8/test/cctest
yurys@chromium.org 6482fb3ee4 Extend CPU profiler with mapping ticks to source lines
The idea behind of this solution is to use the existing "relocation info" instead of consumption the CodeLinePosition events emitted by the V8 compilers.
During generation code and relocation info are generated simultaneously.
When code generation is done you each code object has associated "relocation info".
Relocation information lets V8 to mark interesting places in the generated code: the pointers that might need to be relocated (after garbage collection),
correspondences between the machine program counter and source locations for stack walking.

This patch:
1. Add more source positions info in reloc info to make it suitable for source level mapping.
The amount of data should not be increased dramatically because (1) V8 already marks interesting places in the generated code and
(2) V8 does not write redundant information (it writes a pair (pc_offset, pos) only if pos is changed and skips other).
I measured it on Octane benchmark - for unoptimized code the number of source positions may achieve 2x ('lin_solve' from NavierStokes benchmark).

2. When a sample happens, CPU profiler finds a code object by pc, then use its reloc info to match the sample to a source line.
If a source line is found that hit counter is increased by one for this line.

3. Add a new public V8 API to get the hit source lines by CDT CPU profiler.
Note that it's expected a minor patch in Blink to pack the source level info in JSON to be shown.

4.Add a test that checks how the samples are distributed through source lines.
It tests two cases: (1) relocation info created during code generation and (2) relocation info associated with precompiled function's version.

Patch from Denis Pravdin <denis.pravdin@intel.com>
BUG=None
LOG=Y
R=svenpanne@chromium.org

Review URL: https://codereview.chromium.org/616963005

Patch from Denis Pravdin <denis.pravdin@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@24389 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-10-02 09:20:37 +00:00
..
compiler [turbofan] re-enable some tests for arm64. 2014-10-01 15:47:40 +00:00
cctest.cc Reland 24052 - Require V8 to be explicitly initialized before an Isolate is created 2014-09-19 08:01:35 +00:00
cctest.gyp Implement inlined stack-check guards in TurboFan. 2014-10-01 14:03:02 +00:00
cctest.h Reland 24052 - Require V8 to be explicitly initialized before an Isolate is created 2014-09-19 08:01:35 +00:00
cctest.status [turbofan] don't call out to c 2014-09-22 13:56:03 +00:00
DEPS Add DEPS files and run checkdeps in presubmit check 2014-06-03 13:39:42 +00:00
gay-fixed.cc Use full include paths everywhere 2014-06-03 08:12:43 +00:00
gay-fixed.h Dtoa for fixed notation. 2010-05-05 13:51:27 +00:00
gay-precision.cc Use full include paths everywhere 2014-06-03 08:12:43 +00:00
gay-precision.h Added precision mode to fast-dtoa. 2010-09-20 09:18:00 +00:00
gay-shortest.cc Use full include paths everywhere 2014-06-03 08:12:43 +00:00
gay-shortest.h Dtoa for fixed notation. 2010-05-05 13:51:27 +00:00
log-eq-of-logging-and-traversal.js Fix test-log/EquivalenceOfLoggingAndTraversal 2013-08-26 14:56:23 +00:00
OWNERS Update cctest OWNERS file for mips committers. 2014-09-18 17:33:24 +00:00
print-extension.cc Use full include paths everywhere 2014-06-03 08:12:43 +00:00
print-extension.h Use full include paths everywhere 2014-06-03 08:12:43 +00:00
profiler-extension.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
profiler-extension.h Use full include paths everywhere 2014-06-03 08:12:43 +00:00
test-accessors.cc Use full include paths everywhere 2014-06-03 08:12:43 +00:00
test-alloc.cc Rename ascii to one-byte where applicable. 2014-09-10 12:38:12 +00:00
test-api.cc Introduce v8::Object::GetIsolate(). 2014-10-02 06:52:39 +00:00
test-assembler-arm64.cc ARM64: Remove the unused 'SmiAbs'. 2014-09-16 10:42:09 +00:00
test-assembler-arm.cc Replace our home-grown BitCast with bit_cast from Chrome/Google3. 2014-09-08 09:11:11 +00:00
test-assembler-ia32.cc convert disassembler to use OStream 2014-09-25 08:33:24 +00:00
test-assembler-mips64.cc MIPS64: Fix move operations from coprocessor in simulator. 2014-09-17 16:21:22 +00:00
test-assembler-mips.cc Reland "MIPS: Add support for arch. revision 6 to mips32 port." 2014-08-12 19:04:15 +00:00
test-assembler-x64.cc Land the Fan (disabled) 2014-07-30 13:54:45 +00:00
test-assembler-x87.cc X87: Land the Fan (disabled) 2014-08-01 07:42:06 +00:00
test-ast.cc Reland 24052 - Require V8 to be explicitly initialized before an Isolate is created 2014-09-19 08:01:35 +00:00
test-atomicops.cc Move atomic ops and related files to base library 2014-06-05 12:14:47 +00:00
test-bignum-dtoa.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-bignum.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-checks.cc Replace our homegrown ARRAY_SIZE() with Chrome's arraysize(). 2014-08-26 09:19:24 +00:00
test-circular-queue.cc Fix newly discovered presubmit errors. 2014-08-12 13:33:35 +00:00
test-code-stubs-arm64.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-code-stubs-arm.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-code-stubs-ia32.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-code-stubs-mips64.cc MIPS64: Fix ConvertDToI test. 2014-10-01 16:25:01 +00:00
test-code-stubs-mips.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-code-stubs-x64.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-code-stubs-x87.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-code-stubs.cc Replace our home-grown BitCast with bit_cast from Chrome/Google3. 2014-09-08 09:11:11 +00:00
test-code-stubs.h Introduce x87 port 2014-05-23 16:37:27 +00:00
test-compiler.cc Rename ascii to one-byte where applicable. 2014-09-10 12:38:12 +00:00
test-constantpool.cc Tests that the GC doesn't mistake non-pointer constant pool entries as pointers. 2014-07-28 10:04:36 +00:00
test-conversions.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-cpu-profiler.cc Extend CPU profiler with mapping ticks to source lines 2014-10-02 09:20:37 +00:00
test-dataflow.cc Reland 24052 - Require V8 to be explicitly initialized before an Isolate is created 2014-09-19 08:01:35 +00:00
test-date.cc Replace our homegrown ARRAY_SIZE() with Chrome's arraysize(). 2014-08-26 09:19:24 +00:00
test-debug.cc Introduce PromiseRejectCallback. 2014-09-30 15:29:08 +00:00
test-declarative-accessors.cc Fix newly discovered presubmit errors. 2014-08-12 13:33:35 +00:00
test-decls.cc Move a bunch of GC related files to heap/ subdirectory 2014-08-05 08:18:22 +00:00
test-deoptimization.cc Reland 24052 - Require V8 to be explicitly initialized before an Isolate is created 2014-09-19 08:01:35 +00:00
test-dictionary.cc Pacify GCmole. 2014-08-22 11:09:13 +00:00
test-disasm-arm64.cc Rename ASSERT* to DCHECK*. 2014-08-04 11:34:54 +00:00
test-disasm-arm.cc Use full include paths everywhere 2014-06-03 08:12:43 +00:00
test-disasm-ia32.cc [turbofan] support all shift operands on ia32 2014-10-02 09:04:04 +00:00
test-disasm-mips64.cc MIPS64: Add support for architecture revision 6. 2014-07-29 18:02:26 +00:00
test-disasm-mips.cc Reland "MIPS: Add support for arch. revision 6 to mips32 port." 2014-08-12 19:04:15 +00:00
test-disasm-x64.cc [turbofan] support all shift operands on x64 2014-10-02 09:08:09 +00:00
test-disasm-x87.cc X87: enable the crankshaft compiler for X87 port. 2014-09-20 05:08:58 +00:00
test-diy-fp.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-double.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-dtoa.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-fast-dtoa.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-fixed-dtoa.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-flags.cc Use full include paths everywhere 2014-06-03 08:12:43 +00:00
test-func-name-inference.cc Move i18n-related runtime functions into a separate file. 2014-09-25 07:16:15 +00:00
test-fuzz-arm64.cc Use full include paths everywhere 2014-06-03 08:12:43 +00:00
test-gc-tracer.cc re-land: Track history of events in GCTracer. 2014-07-24 11:16:01 +00:00
test-global-handles.cc Rename ASSERT* to DCHECK*. 2014-08-04 11:34:54 +00:00
test-global-object.cc Use full include paths everywhere 2014-06-03 08:12:43 +00:00
test-hashing.cc Remove dead code for inline string hashing. 2014-09-04 12:15:09 +00:00
test-hashmap.cc Check alpha-sorting of includes during presubmit. 2014-06-20 08:40:11 +00:00
test-heap-profiler.cc Rename Runtime_CompileUnoptimized to Runtime_CompileLazy, because that is what it does. Split Compiler::GetUnoptimizedCode into two variants, one for lazy compilation (which can return optimized code!) and the other that actually returns unoptimized code. 2014-09-17 15:29:42 +00:00
test-heap.cc Replace OStream with std::ostream. 2014-09-30 10:29:32 +00:00
test-hydrogen-types.cc Use full include paths everywhere 2014-06-03 08:12:43 +00:00
test-javascript-arm64.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-js-arm64-variables.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-list.cc Use full include paths everywhere 2014-06-03 08:12:43 +00:00
test-liveedit.cc Reland 24052 - Require V8 to be explicitly initialized before an Isolate is created 2014-09-19 08:01:35 +00:00
test-lockers.cc Fix newly discovered presubmit errors. 2014-08-12 13:33:35 +00:00
test-log-stack-tracer.cc CPU profiler: increase the max number of captured frames. 2014-06-24 16:00:51 +00:00
test-log.cc Reland 24052 - Require V8 to be explicitly initialized before an Isolate is created 2014-09-19 08:01:35 +00:00
test-macro-assembler-arm.cc Reland 24052 - Require V8 to be explicitly initialized before an Isolate is created 2014-09-19 08:01:35 +00:00
test-macro-assembler-ia32.cc Reland 24052 - Require V8 to be explicitly initialized before an Isolate is created 2014-09-19 08:01:35 +00:00
test-macro-assembler-mips64.cc Add mips64 port. 2014-07-09 11:08:26 +00:00
test-macro-assembler-mips.cc MIPS: Fix cctest/NaNs after r23767 "Replace our home-grown BitCast with bit_cast from Chrome/Google3". 2014-09-08 16:14:21 +00:00
test-macro-assembler-x64.cc Reland 24052 - Require V8 to be explicitly initialized before an Isolate is created 2014-09-19 08:01:35 +00:00
test-macro-assembler-x87.cc Reland 24052 - Require V8 to be explicitly initialized before an Isolate is created 2014-09-19 08:01:35 +00:00
test-mark-compact.cc HeapProfiler: remove obsolete AddImplicitReferences 2014-08-26 13:05:54 +00:00
test-mementos.cc Remove dependency on Vector from platform files 2014-06-13 16:43:27 +00:00
test-microtask-delivery.cc Use full include paths everywhere 2014-06-03 08:12:43 +00:00
test-object-observe.cc Replace our homegrown ARRAY_SIZE() with Chrome's arraysize(). 2014-08-26 09:19:24 +00:00
test-ordered-hash-table.cc Pacify GCmole. 2014-08-22 11:09:13 +00:00
test-parsing.cc ES6: Implement object literal property shorthand 2014-09-29 14:15:48 +00:00
test-platform-linux.cc Refactor unit tests for the base library to use GTest. 2014-08-06 09:35:21 +00:00
test-platform-win32.cc Refactor unit tests for the base library to use GTest. 2014-08-06 09:35:21 +00:00
test-platform.cc MIPS64: Fixed int vs. uintptr_t confusion (plus some cleanup on the way). 2014-09-16 20:16:11 +00:00
test-profile-generator.cc Move anonymous function name beautifying out of v8. 2014-08-05 07:08:39 +00:00
test-random-number-generator.cc Reland 24052 - Require V8 to be explicitly initialized before an Isolate is created 2014-09-19 08:01:35 +00:00
test-regexp.cc Replace OStream with std::ostream. 2014-09-30 10:29:32 +00:00
test-reloc-info.cc Use full include paths everywhere 2014-06-03 08:12:43 +00:00
test-representation.cc Check alpha-sorting of includes during presubmit. 2014-06-20 08:40:11 +00:00
test-sampler-api.cc Initial implementation of GetStackSample sampling profiler API. 2014-09-29 12:59:54 +00:00
test-serialize.cc Fix name clashes in cctests. 2014-10-02 08:18:03 +00:00
test-spaces.cc Fix test-spaces on win64 2014-10-01 11:54:47 +00:00
test-strings.cc Move configuration of ResourceConstraints to Isolate construction 2014-09-16 09:15:02 +00:00
test-strtod.cc Move platform abstraction to base library 2014-06-30 13:25:46 +00:00
test-symbols.cc Land the Fan (disabled) 2014-07-30 13:54:45 +00:00
test-thread-termination.cc Do not expose termination exceptions to the Exception API. 2014-09-01 09:11:44 +00:00
test-threads.cc Fix newly discovered presubmit errors. 2014-08-12 13:33:35 +00:00
test-types.cc Add some tests about range types. 2014-09-25 08:31:23 +00:00
test-unbound-queue.cc Check alpha-sorting of includes during presubmit. 2014-06-20 08:40:11 +00:00
test-unique.cc Use full include paths everywhere 2014-06-03 08:12:43 +00:00
test-unscopables-hidden-prototype.cc Enable ES6 unscopables 2014-08-08 11:42:59 +00:00
test-utils-arm64.cc Rename ASSERT* to DCHECK*. 2014-08-04 11:34:54 +00:00
test-utils-arm64.h Rename ASSERT* to DCHECK*. 2014-08-04 11:34:54 +00:00
test-utils.cc Reland "Enable C++11 tests on windows." 2014-08-28 07:01:56 +00:00
test-version.cc Use full include paths everywhere 2014-06-03 08:12:43 +00:00
test-weakmaps.cc Remove all encountered weak maps from the list of weak collections when incremental marking is aborted. 2014-08-05 07:29:13 +00:00
test-weaksets.cc Rename ASSERT* to DCHECK*. 2014-08-04 11:34:54 +00:00
test-weaktypedarrays.cc Move a bunch of GC related files to heap/ subdirectory 2014-08-05 08:18:22 +00:00
testcfg.py Fix test serialization path for windows. 2014-03-26 07:40:32 +00:00
trace-extension.cc Use full include paths everywhere 2014-06-03 08:12:43 +00:00
trace-extension.h Use full include paths everywhere 2014-06-03 08:12:43 +00:00