v8/test/cctest
Mike Stanton 386ff6e5d6 [TurboFan] Serializing context information
In TurboFan, context specialization is an optimization that tries to
either replace the load of a value from the context with a constant,
or if that can't be achieved, at least reduce the hops up the
context chain by starting a walk to the required depth from the
first constant context that it can reach.

Currently, this optimization is performed by looking into the
heap during a reducer pass. With fully concurrent TurboFan, we
need to instead gather information about contexts we may want
to perform this optimization on during serialization.

This CL adds functionality to the serializer to recognize and
model operations that affect the context register. We add to the
hinting structure already used by the serializer. There is
a new type of hint: a VirtualContext. This is a tuple consisting
of a handle to a Context, and a distance field that indicates how
far away in a to-be-realized chain this VirtualContext sits from
the context in the handle. For example:

bytecode stream:
...
CreateBlockContext
...

After a block context is created, the accumulator now contains
a VirtualContext Hint with a distance of 1 from any context hints
that we are keeping track of in the current context register.

More details in the design doc here:
https://docs.google.com/document/d/1Y0LKKCEenLWyAZTetoAIpKTZRCxaNdkYV8X1GaCax2A/edit?usp=sharing

Change-Id: I63732ebd106cc138fb1e9789d0676ece63e15d27
Bug: v8:7790
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1605941
Commit-Queue: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62370}
2019-06-26 08:25:53 +00:00
..
compiler [TurboFan] Serializing context information 2019-06-26 08:25:53 +00:00
heap [regexp] Allow JSRegExpResult allocations in large object space 2019-06-26 07:50:33 +00:00
interpreter [parser] Improve error when using import decl in a script 2019-06-25 12:33:11 +00:00
libplatform [tracing] Add a test harness for perfetto tracing tests 2019-05-27 15:05:12 +00:00
libsampler [cpu-profiler] Only record SIGPROF-based samples for samplers that request samples 2019-02-13 09:29:38 +00:00
parsing Move utility code to src/utils 2019-05-23 14:13:34 +00:00
torque [csa] Track stores and perform simple alias analysis in CSA Load Elimination 2019-06-18 08:46:55 +00:00
wasm [wasm][anyref] Implement correct type checking for br_table 2019-06-25 12:00:21 +00:00
assembler-helper-arm.cc [cleanup] Drop some dead (Macro)Assembler code 2019-05-27 08:53:28 +00:00
assembler-helper-arm.h Move handles-related files to src/handles 2019-05-23 06:00:15 +00:00
BUILD.gn [ptr-compr][arm64] Use ldr_w to load on 32 bits for CompressedHeapConstants 2019-06-21 07:37:04 +00:00
cctest.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
cctest.h [cleanup] Replace function typedefs by using declarations 2019-05-28 08:35:08 +00:00
cctest.status [snapshot] Remove TEST natives 2019-06-04 15:05:52 +00:00
collector.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
DEPS [torque]: Add the ability to test Torque functionality with cctest 2018-05-13 10:58:56 +00:00
expression-type-collector-macros.h [cleanup] Fix remaining (D)CHECK macro usages 2017-10-18 10:12:31 +00:00
gay-fixed.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
gay-fixed.h Move utility code to src/utils 2019-05-23 14:13:34 +00:00
gay-precision.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
gay-precision.h Move utility code to src/utils 2019-05-23 14:13:34 +00:00
gay-shortest.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
gay-shortest.h Move utility code to src/utils 2019-05-23 14:13:34 +00:00
OWNERS [owners] Remove redundant OWNERS files in test/ 2019-06-24 12:44:32 +00:00
print-extension.cc Use nullptr instead of NULL where possible 2017-10-13 17:21:49 +00:00
print-extension.h [cleanup] Mark test/ methods in subclasses with override. 2018-09-17 07:40:00 +00:00
profiler-extension.cc Reland "[Compile] Ensure we don't access the native context during bytecode finalization." 2018-10-26 22:33:56 +00:00
profiler-extension.h [cleanup] Mark test/ methods in subclasses with override. 2018-09-17 07:40:00 +00:00
scope-test-helper.h [parser] Various Scope and Context speedups 2019-01-28 13:06:03 +00:00
setup-isolate-for-tests.cc [interpreter] Always put bytecode handlers in builtins table 2018-09-20 09:58:15 +00:00
setup-isolate-for-tests.h Move initialization code into src/init 2019-05-16 12:36:15 +00:00
test-access-checks.cc Replace CHECK(false) by UNREACHABLE() 2017-12-19 18:58:07 +00:00
test-accessor-assembler.cc [cleanup] Replace simple typedefs by using 2019-05-27 12:39:49 +00:00
test-accessors.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-allocation.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-api-accessors.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
test-api-array-buffer.cc [test-api] Extract arraybufs and typed arrays 2019-06-17 15:27:01 +00:00
test-api-interceptors.cc Move utility code to src/utils 2019-05-23 14:13:34 +00:00
test-api-stack-traces.cc Reland "Move API-related files" 2019-05-17 12:52:27 +00:00
test-api-typed-array.cc [typed-arrays] Introduce JSTypedArray::kMaxSizeInHeap constant 2019-06-18 17:19:19 +00:00
test-api.cc [modules] Introduce SourceTextModule class 2019-06-19 17:54:52 +00:00
test-api.h [test-api] Extract arraybufs and typed arrays 2019-06-17 15:27:01 +00:00
test-array-list.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
test-assembler-arm64.cc Reland "[arm64] Refactor constant pool implementation" 2019-06-18 11:34:26 +00:00
test-assembler-arm.cc [cleanup] Remove 'typedef struct' and 'typedef enum' 2019-05-28 12:17:35 +00:00
test-assembler-ia32.cc [cleanup] Replace function typedefs by using declarations 2019-05-28 08:35:08 +00:00
test-assembler-mips64.cc [cleanup] Remove 'typedef struct' and 'typedef enum' 2019-05-28 12:17:35 +00:00
test-assembler-mips.cc [cleanup] Remove 'typedef struct' and 'typedef enum' 2019-05-28 12:17:35 +00:00
test-assembler-ppc.cc Move architecture dependent files 2019-05-28 14:02:15 +00:00
test-assembler-s390.cc Move architecture dependent files 2019-05-28 14:02:15 +00:00
test-assembler-x64.cc [cleanup] Replace function typedefs by using declarations 2019-05-28 08:35:08 +00:00
test-atomicops.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-bignum-dtoa.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-bignum.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-bit-vector.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-circular-queue.cc [cleanup] Replace simple typedefs by using 2019-05-27 12:39:49 +00:00
test-code-layout.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
test-code-stub-assembler.cc [objects] Rename JSValue to JSPrimitiveWrapper 2019-06-24 13:54:38 +00:00
test-compiler.cc [api] Add a way to specify the max heap size in ResourceConstraints 2019-06-06 10:22:56 +00:00
test-constantpool.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-conversions.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-cpu-profiler.cc [cleanup] Replace simple typedefs by using 2019-05-27 12:39:49 +00:00
test-date.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-debug.cc [objects] Rename JSValue to JSPrimitiveWrapper 2019-06-24 13:54:38 +00:00
test-decls.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-deoptimization.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-dictionary.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-disasm-arm64.cc Move architecture dependent files 2019-05-28 14:02:15 +00:00
test-disasm-arm.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-disasm-ia32.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-disasm-mips64.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-disasm-mips.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-disasm-ppc.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-disasm-s390.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-disasm-x64.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-diy-fp.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-double.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-dtoa.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-elements-kind.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-extra.js [js] Remove CORE JS Natives (prologue.js), port extra utils to C++/Torque 2019-01-07 11:57:46 +00:00
test-factory.cc Move handles-related files to src/handles 2019-05-23 06:00:15 +00:00
test-fast-dtoa.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-feedback-vector.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-feedback-vector.h Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
test-field-type-tracking.cc [map] Ignore migration target bit when normalizing 2019-06-24 10:44:11 +00:00
test-fixed-dtoa.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-flags.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-func-name-inference.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-fuzz-arm64.cc Move architecture dependent files 2019-05-28 14:02:15 +00:00
test-global-handles.cc [cleanup] Replace function typedefs by using declarations 2019-05-28 08:35:08 +00:00
test-global-object.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-hashcode.cc [ptr-compr] Pass Isolate to JSObject::NormalizeProperties() 2019-06-11 11:11:10 +00:00
test-hashmap.cc [cleanup] Replace function typedefs by using declarations 2019-05-28 08:35:08 +00:00
test-heap-profiler.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-icache.cc Move handles-related files to src/handles 2019-05-23 06:00:15 +00:00
test-identity-map.cc Move utility code to src/utils 2019-05-23 14:13:34 +00:00
test-inobject-slack-tracking.cc [objects] Rename JSValue to JSPrimitiveWrapper 2019-06-24 13:54:38 +00:00
test-inspector.cc [inspector] Add fromUTF16LE function to string-16 2019-06-24 16:26:01 +00:00
test-intl.cc Better GetAvilableLocales check resources 2019-06-21 23:04:09 +00:00
test-javascript-arm64.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-js-arm64-variables.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-js-weak-refs.cc [WeakRefs] Rename to KeepDuringJob, ClearKeptObjects 2019-06-13 08:57:39 +00:00
test-liveedit.cc Add quotes around unexpected token SyntaxError 2019-06-11 06:11:58 +00:00
test-lockers.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-log-stack-tracer.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-log.cc [cleanup][heap] Improve heap iterator naming 2019-06-17 14:38:02 +00:00
test-macro-assembler-arm64.cc [ptr-compr][arm64] Use ldr_w to load on 32 bits for CompressedHeapConstants 2019-06-21 07:37:04 +00:00
test-macro-assembler-arm.cc [cleanup] Remove 'typedef struct' and 'typedef enum' 2019-05-28 12:17:35 +00:00
test-macro-assembler-mips64.cc [cleanup] Replace function typedefs by using declarations 2019-05-28 08:35:08 +00:00
test-macro-assembler-mips.cc [cleanup] Replace function typedefs by using declarations 2019-05-28 08:35:08 +00:00
test-macro-assembler-x64.cc Move architecture dependent files 2019-05-28 14:02:15 +00:00
test-managed.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
test-mementos.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
test-modules.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-object.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-orderedhashtable.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-parsing.cc [modules] Introduce SourceTextModule class 2019-06-19 17:54:52 +00:00
test-platform.cc s390: Edited Generate_CEntry to correctly return buffer when built with clang 2018-09-05 07:01:16 +00:00
test-poison-disasm-arm.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
test-profile-generator.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-random-number-generator.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-regexp.cc [regexp] Remove unused DispatchTable and ZoneSplayTree 2019-06-19 07:19:38 +00:00
test-representation.cc Move relevant files to src/objects 2019-05-20 08:57:47 +00:00
test-roots.cc [roheap] Set owner_ to nullptr for read-only chunks 2019-06-04 12:06:12 +00:00
test-sampler-api.cc [cleanup] Replace simple typedefs by using 2019-05-27 12:39:49 +00:00
test-serialize.cc Reland "[roheap] Check that ro-heap is always passed the same read-only snapshot" 2019-06-20 13:05:26 +00:00
test-smi-lexicographic-compare.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-stack-unwinding-x64.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-strings.cc [api] Add a way to specify the max heap size in ResourceConstraints 2019-06-06 10:22:56 +00:00
test-strtod.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-symbols.cc Move utility code to src/utils 2019-05-23 14:13:34 +00:00
test-sync-primitives-arm64.cc Move architecture dependent files 2019-05-28 14:02:15 +00:00
test-sync-primitives-arm.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-thread-termination.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-threads.cc Move relevant files to src/execution 2019-05-22 08:36:33 +00:00
test-trace-event.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-traced-value.cc [tracing] Improve tracing signals for compilation/optimization. 2019-03-25 14:49:08 +00:00
test-transitions.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-transitions.h Move relevant files to src/objects 2019-05-20 08:57:47 +00:00
test-typedarrays.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-types.cc [cleanup] Replace simple typedefs by using 2019-05-27 12:39:49 +00:00
test-unboxed-doubles.cc [ptr-compr] Pass Isolate to JSObject::MigrateToMap() and friends 2019-06-11 09:58:36 +00:00
test-unscopables-hidden-prototype.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-unwinder.cc [cleanup] Avoid {Object::operator->} 2019-05-23 07:52:07 +00:00
test-usecounters.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-utils-arm64.cc Move architecture dependent files 2019-05-28 14:02:15 +00:00
test-utils-arm64.h Move architecture dependent files 2019-05-28 14:02:15 +00:00
test-utils.cc [cleanup] Replace simple typedefs by using 2019-05-27 12:39:49 +00:00
test-version.cc Move remaining files in src/ 2019-05-24 18:24:36 +00:00
test-weakmaps.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
test-weaksets.cc Move more relevant files to src/objects 2019-05-23 08:52:30 +00:00
testcfg.py Reland "Preparing v8 to use with python3 /test" 2019-03-20 09:56:06 +00:00
trace-extension.cc [cleanup] Avoid {Object::operator->} 2019-05-23 07:52:07 +00:00
trace-extension.h Move remaining files in src/ 2019-05-24 18:24:36 +00:00
unicode-helpers.cc Move string-related files to src/strings 2019-05-21 07:17:48 +00:00
unicode-helpers.h Move string-related files to src/strings 2019-05-21 07:17:48 +00:00