v8/test/cctest
svenpanne@chromium.org d56a21ebff 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>;

R=svenpanne@chromium.org, yurys@chromium.org

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

Patch from Weiliang <weiliang.lin@intel.com>.

Cr-Commit-Position: refs/heads/master@{#25182}
git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@25182 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-11-06 09:17:14 +00:00
..
compiler Avoid redundant work in scheduler loop header/depth calculation. 2014-11-06 09:15:42 +00:00
cctest.cc Remove (untested) code for unsupported compilers. 2014-10-20 12:04:22 +00:00
cctest.gyp TransitionArray now uses <is_data_property, name, attributes> tuple as a key, which allows to have several entries for the same property name. 2014-11-05 09:26:48 +00:00
cctest.h Add support for a target new space size 2014-10-22 06:58:38 +00:00
cctest.status Skip tests for mips. 2014-10-31 13:36:49 +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 Fix for bug 429168, PdfJs regression. We pay a very high cost for AllocationResult being a > kPointerSize struct. This can be avoided by using Smis to indicate failure with retry spaces. 2014-11-03 08:43:40 +00:00
test-api.cc Allow uncaught exception messaging in Object.observe callbacks. 2014-11-05 07:23:59 +00:00
test-assembler-arm64.cc Add FRINTP (round towards positive infinity) instruction. 2014-10-22 11:06:22 +00:00
test-assembler-arm.cc Add vrint{a,n,p,m,z} instructions to arm assembler. These instructions are only available on ARMv8. 2014-10-30 11:01:12 +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 Assign bailout and type feedback IDs in a post-pass 2014-10-21 12:16:37 +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-bit-vector.cc convert BitVector to use pointer size blocks 2014-10-31 10:44:47 +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 vector-based ICs did not update type feedback counts correctly. 2014-10-20 11:42:56 +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 The idea behind of this solution is to use the existing "relocation info" instead of consumption the CodeLinePosition events emitted by the V8 compilers. 2014-11-06 09:17:14 +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 Allow uncaught exception messaging in Object.observe callbacks. 2014-11-05 07:23:59 +00:00
test-declarative-accessors.cc Fix newly discovered presubmit errors. 2014-08-12 13:33:35 +00:00
test-decls.cc harmony-scoping: Correct dynamic lookups on a top level. 2014-10-29 11:00:15 +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 Add FRINTP (round towards positive infinity) instruction. 2014-10-22 11:06:22 +00:00
test-disasm-arm.cc Add vrint{a,n,p,m,z} instructions to arm assembler. These instructions are only available on ARMv8. 2014-10-30 11:01:12 +00:00
test-disasm-ia32.cc IA: Double arithmetic binops support memory operand 2014-11-03 05:57:17 +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] Also optimize unsigned division by constant. 2014-11-03 10:05:46 +00:00
test-disasm-x87.cc X87: [turbofan] support all shift operands on ia32 2014-10-08 06:13:22 +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-feedback-vector.cc Introduce FeedbackNexus for vector-based ics. 2014-10-28 16:05:45 +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 some Runtime:: functions and remove runtime.h as include when unnecessary. 2014-10-20 12:07:45 +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 Reland "Limit the number of transitions allowed per hidden class." 2014-11-03 16:46:29 +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 data races and leaks related to v8::Lockers 2014-10-08 08:17:04 +00:00
test-log-stack-tracer.cc Remove (untested) code for unsupported compilers. 2014-10-20 12:04:22 +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 Allow uncaught exception messaging in Object.observe callbacks. 2014-11-05 07:23:59 +00:00
test-ordered-hash-table.cc Pacify GCmole. 2014-08-22 11:09:13 +00:00
test-parsing.cc Classes: static should still be treated as a strict reserved word 2014-11-03 19:54:14 +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 Remove v8stdint.h, it doesn't serve a purpose anymore. 2014-10-21 08:25:14 +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 Add serializer test case to bug fix in r24871. 2014-10-27 16:40:16 +00:00
test-spaces.cc Really disable test when running with optimize for size 2014-10-22 08:15:47 +00:00
test-strings.cc Fix a few nits found by PVS Studio 2014-11-03 19:45:25 +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-transitions.cc TransitionArray now uses <is_data_property, name, attributes> tuple as a key, which allows to have several entries for the same property name. 2014-11-05 09:26:48 +00:00
test-types.cc [turbofan] Use range types to type and lower arithmetic ops. 2014-10-23 14:40:43 +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 Fix ASAN warning. 2014-10-28 08:34:40 +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 Tick processor: Print C++ entry points 2014-10-17 15:44:02 +00:00
trace-extension.h Use full include paths everywhere 2014-06-03 08:12:43 +00:00
types-fuzz.h [turbofan] Use range types to type and lower arithmetic ops. 2014-10-23 14:40:43 +00:00