fb03b88ed1
The minimal implementation which does something useful. Initial machinery for serializing / deserializing objects and functions (only the very simple cases are supported). For more info, see https://docs.google.com/document/d/1Qierkg3b3klIwCQt-oZCHqhcc1_9DXNIErBwvdpD4wU/edit?usp=sharing Bug: v8:11525 Change-Id: I73c4de11285c7912bf9870868d203d4b3d2b4e5f Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2716288 Reviewed-by: Hannes Payer <hpayer@chromium.org> Reviewed-by: Shu-yu Guo <syg@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#73371}
532 lines
15 KiB
Plaintext
532 lines
15 KiB
Plaintext
# Copyright 2016 The V8 project authors. All rights reserved.
|
|
# Use of this source code is governed by a BSD-style license that can be
|
|
# found in the LICENSE file.
|
|
|
|
import("../../gni/v8.gni")
|
|
|
|
config("cctest_config") {
|
|
# Work around a bug in the gold linker.
|
|
if (use_gold && target_cpu == "x86") {
|
|
ldflags = [ "-Wl,--icf=none" ]
|
|
}
|
|
}
|
|
|
|
v8_executable("cctest") {
|
|
testonly = true
|
|
|
|
sources = [ "cctest.cc" ]
|
|
|
|
deps = [ ":cctest_sources" ]
|
|
|
|
data_deps = [ "../../tools:v8_testrunner" ]
|
|
|
|
data = [
|
|
"testcfg.py",
|
|
"cctest.status",
|
|
"interpreter/bytecode_expectations/",
|
|
]
|
|
|
|
configs = [
|
|
"../..:external_config",
|
|
"../..:internal_config_base",
|
|
"../..:v8_tracing_config",
|
|
":cctest_config",
|
|
]
|
|
|
|
ldflags = []
|
|
|
|
if (v8_use_perfetto) {
|
|
deps += [
|
|
# TODO(skyostil): Switch the test to use protozero.
|
|
"//third_party/perfetto/protos/perfetto/trace/interned_data:lite",
|
|
"//third_party/perfetto/protos/perfetto/trace/track_event:lite",
|
|
]
|
|
}
|
|
|
|
# TODO(machenbach): Translate from gyp.
|
|
#["OS=="aix"", {
|
|
# "ldflags": [ "-Wl,-bbigtoc" ],
|
|
#}],
|
|
}
|
|
|
|
v8_header_set("cctest_headers") {
|
|
testonly = true
|
|
|
|
configs = [
|
|
"../..:external_config",
|
|
"../..:internal_config_base",
|
|
]
|
|
|
|
deps = [
|
|
"../..:v8_internal_headers",
|
|
"../..:v8_libbase",
|
|
"../..:v8_libplatform",
|
|
]
|
|
|
|
sources = [ "cctest.h" ]
|
|
}
|
|
|
|
config("cctest_sources_config") {
|
|
if (is_clang) {
|
|
cflags = [ "-Wno-string-concatenation" ]
|
|
}
|
|
}
|
|
|
|
v8_source_set("cctest_sources") {
|
|
testonly = true
|
|
|
|
sources = [
|
|
### gcmole(all) ###
|
|
"../common/assembler-tester.h",
|
|
"../common/flag-utils.h",
|
|
"cctest-utils.h",
|
|
"collector.h",
|
|
"compiler/c-signature.h",
|
|
"compiler/call-tester.h",
|
|
"compiler/code-assembler-tester.h",
|
|
"compiler/codegen-tester.cc",
|
|
"compiler/codegen-tester.h",
|
|
"compiler/function-tester.cc",
|
|
"compiler/function-tester.h",
|
|
"compiler/node-observer-tester.h",
|
|
"compiler/serializer-tester.cc",
|
|
"compiler/serializer-tester.h",
|
|
"compiler/test-basic-block-profiler.cc",
|
|
"compiler/test-branch-combine.cc",
|
|
"compiler/test-code-assembler.cc",
|
|
"compiler/test-code-generator.cc",
|
|
"compiler/test-concurrent-shared-function-info.cc",
|
|
"compiler/test-gap-resolver.cc",
|
|
"compiler/test-graph-visualizer.cc",
|
|
"compiler/test-instruction-scheduler.cc",
|
|
"compiler/test-instruction.cc",
|
|
"compiler/test-js-constant-cache.cc",
|
|
"compiler/test-js-context-specialization.cc",
|
|
"compiler/test-js-typed-lowering.cc",
|
|
"compiler/test-jump-threading.cc",
|
|
"compiler/test-linkage.cc",
|
|
"compiler/test-loop-analysis.cc",
|
|
"compiler/test-machine-operator-reducer.cc",
|
|
"compiler/test-node.cc",
|
|
"compiler/test-operator.cc",
|
|
"compiler/test-representation-change.cc",
|
|
"compiler/test-run-bytecode-graph-builder.cc",
|
|
"compiler/test-run-calls-to-external-references.cc",
|
|
"compiler/test-run-deopt.cc",
|
|
"compiler/test-run-intrinsics.cc",
|
|
"compiler/test-run-jsbranches.cc",
|
|
"compiler/test-run-jscalls.cc",
|
|
"compiler/test-run-jsexceptions.cc",
|
|
"compiler/test-run-jsobjects.cc",
|
|
"compiler/test-run-jsops.cc",
|
|
"compiler/test-run-load-store.cc",
|
|
"compiler/test-run-machops.cc",
|
|
"compiler/test-run-retpoline.cc",
|
|
"compiler/test-run-stackcheck.cc",
|
|
"compiler/test-run-tail-calls.cc",
|
|
"compiler/test-run-unwinding-info.cc",
|
|
"compiler/test-run-variables.cc",
|
|
"compiler/test-sloppy-equality.cc",
|
|
"compiler/value-helper.cc",
|
|
"compiler/value-helper.h",
|
|
"disasm-regex-helper.cc",
|
|
"disasm-regex-helper.h",
|
|
"expression-type-collector-macros.h",
|
|
"gay-fixed.cc",
|
|
"gay-fixed.h",
|
|
"gay-precision.cc",
|
|
"gay-precision.h",
|
|
"gay-shortest.cc",
|
|
"gay-shortest.h",
|
|
"heap/heap-tester.h",
|
|
"heap/heap-utils.cc",
|
|
"heap/heap-utils.h",
|
|
"heap/test-alloc.cc",
|
|
"heap/test-array-buffer-tracker.cc",
|
|
"heap/test-compaction.cc",
|
|
"heap/test-concurrent-allocation.cc",
|
|
"heap/test-concurrent-marking.cc",
|
|
"heap/test-embedder-tracing.cc",
|
|
"heap/test-external-string-tracker.cc",
|
|
"heap/test-heap.cc",
|
|
"heap/test-incremental-marking.cc",
|
|
"heap/test-invalidated-slots.cc",
|
|
"heap/test-iterators.cc",
|
|
"heap/test-lab.cc",
|
|
"heap/test-mark-compact.cc",
|
|
"heap/test-memory-measurement.cc",
|
|
"heap/test-page-promotion.cc",
|
|
"heap/test-spaces.cc",
|
|
"heap/test-unmapper.cc",
|
|
"heap/test-weak-references.cc",
|
|
"heap/test-write-barrier.cc",
|
|
"interpreter/bytecode-expectations-printer.cc",
|
|
"interpreter/bytecode-expectations-printer.h",
|
|
"interpreter/interpreter-tester.cc",
|
|
"interpreter/interpreter-tester.h",
|
|
"interpreter/source-position-matcher.cc",
|
|
"interpreter/source-position-matcher.h",
|
|
"interpreter/test-bytecode-generator.cc",
|
|
"interpreter/test-interpreter-intrinsics.cc",
|
|
"interpreter/test-interpreter.cc",
|
|
"interpreter/test-source-positions.cc",
|
|
"libplatform/test-tracing.cc",
|
|
"libsampler/test-sampler.cc",
|
|
"manually-externalized-buffer.h",
|
|
"parsing/test-parse-decision.cc",
|
|
"parsing/test-preparser.cc",
|
|
"parsing/test-scanner-streams.cc",
|
|
"parsing/test-scanner.cc",
|
|
"print-extension.cc",
|
|
"print-extension.h",
|
|
"profiler-extension.cc",
|
|
"profiler-extension.h",
|
|
"scope-test-helper.h",
|
|
"setup-isolate-for-tests.cc",
|
|
"setup-isolate-for-tests.h",
|
|
"test-access-checks.cc",
|
|
"test-accessor-assembler.cc",
|
|
"test-accessors.cc",
|
|
"test-allocation.cc",
|
|
"test-api-accessors.cc",
|
|
"test-api-array-buffer.cc",
|
|
"test-api-icu.cc",
|
|
"test-api-interceptors.cc",
|
|
"test-api-stack-traces.cc",
|
|
"test-api-typed-array.cc",
|
|
"test-api.cc",
|
|
"test-api.h",
|
|
"test-array-list.cc",
|
|
"test-atomicops.cc",
|
|
"test-bignum-dtoa.cc",
|
|
"test-bignum.cc",
|
|
"test-bit-vector.cc",
|
|
"test-circular-queue.cc",
|
|
"test-code-layout.cc",
|
|
"test-code-pages.cc",
|
|
"test-code-stub-assembler.cc",
|
|
"test-compiler.cc",
|
|
"test-concurrent-descriptor-array.cc",
|
|
"test-concurrent-feedback-vector.cc",
|
|
"test-concurrent-js-array.cc",
|
|
"test-concurrent-prototype.cc",
|
|
"test-concurrent-script-context-table.cc",
|
|
"test-concurrent-string.cc",
|
|
"test-concurrent-transition-array.cc",
|
|
"test-constantpool.cc",
|
|
"test-conversions.cc",
|
|
"test-cpu-profiler.cc",
|
|
"test-date.cc",
|
|
"test-debug-helper.cc",
|
|
"test-debug.cc",
|
|
"test-decls.cc",
|
|
"test-deoptimization.cc",
|
|
"test-descriptor-array.cc",
|
|
"test-dictionary.cc",
|
|
"test-diy-fp.cc",
|
|
"test-double.cc",
|
|
"test-dtoa.cc",
|
|
"test-elements-kind.cc",
|
|
"test-factory.cc",
|
|
"test-fast-dtoa.cc",
|
|
"test-feedback-vector.cc",
|
|
"test-feedback-vector.h",
|
|
"test-field-type-tracking.cc",
|
|
"test-fixed-dtoa.cc",
|
|
"test-flags.cc",
|
|
"test-func-name-inference.cc",
|
|
"test-global-handles.cc",
|
|
"test-global-object.cc",
|
|
"test-hashcode.cc",
|
|
"test-hashmap.cc",
|
|
"test-heap-profiler.cc",
|
|
"test-icache.cc",
|
|
"test-identity-map.cc",
|
|
"test-inobject-slack-tracking.cc",
|
|
"test-inspector.cc",
|
|
"test-intl.cc",
|
|
"test-js-weak-refs.cc",
|
|
"test-liveedit.cc",
|
|
"test-local-handles.cc",
|
|
"test-lockers.cc",
|
|
"test-log.cc",
|
|
"test-managed.cc",
|
|
"test-mementos.cc",
|
|
"test-modules.cc",
|
|
"test-object.cc",
|
|
"test-orderedhashtable.cc",
|
|
"test-parsing.cc",
|
|
"test-persistent-handles.cc",
|
|
"test-platform.cc",
|
|
"test-profile-generator.cc",
|
|
"test-property-details.cc",
|
|
"test-random-number-generator.cc",
|
|
"test-regexp.cc",
|
|
"test-representation.cc",
|
|
"test-roots.cc",
|
|
"test-sampler-api.cc",
|
|
"test-serialize.cc",
|
|
"test-smi-lexicographic-compare.cc",
|
|
"test-strings.cc",
|
|
"test-strtod.cc",
|
|
"test-swiss-name-dictionary.cc",
|
|
"test-symbols.cc",
|
|
"test-thread-termination.cc",
|
|
"test-threads.cc",
|
|
"test-trace-event.cc",
|
|
"test-traced-value.cc",
|
|
"test-transitions.cc",
|
|
"test-transitions.h",
|
|
"test-typedarrays.cc",
|
|
"test-types.cc",
|
|
"test-unscopables-hidden-prototype.cc",
|
|
"test-unwinder-code-pages.cc",
|
|
"test-usecounters.cc",
|
|
"test-utils.cc",
|
|
"test-verifiers.cc",
|
|
"test-version.cc",
|
|
"test-weakmaps.cc",
|
|
"test-weaksets.cc",
|
|
"test-web-snapshots.cc",
|
|
"torque/test-torque.cc",
|
|
"trace-extension.cc",
|
|
"trace-extension.h",
|
|
"unicode-helpers.cc",
|
|
"unicode-helpers.h",
|
|
]
|
|
|
|
if (v8_current_cpu == "arm") {
|
|
sources += [ ### gcmole(arch:arm) ###
|
|
"assembler-helper-arm.cc",
|
|
"assembler-helper-arm.h",
|
|
"test-assembler-arm.cc",
|
|
"test-disasm-arm.cc",
|
|
"test-macro-assembler-arm.cc",
|
|
"test-poison-disasm-arm.cc",
|
|
"test-sync-primitives-arm.cc",
|
|
]
|
|
} else if (v8_current_cpu == "arm64") {
|
|
sources += [ ### gcmole(arch:arm64) ###
|
|
"test-assembler-arm64.cc",
|
|
"test-disasm-arm64.cc",
|
|
"test-fuzz-arm64.cc",
|
|
"test-javascript-arm64.cc",
|
|
"test-js-arm64-variables.cc",
|
|
"test-macro-assembler-arm64.cc",
|
|
"test-pointer-auth-arm64.cc",
|
|
"test-poison-disasm-arm64.cc",
|
|
"test-sync-primitives-arm64.cc",
|
|
"test-utils-arm64.cc",
|
|
"test-utils-arm64.h",
|
|
]
|
|
if (is_win) {
|
|
sources += [ "test-stack-unwinding-win64.cc" ]
|
|
}
|
|
} else if (v8_current_cpu == "x86") {
|
|
sources += [ ### gcmole(arch:ia32) ###
|
|
"test-assembler-ia32.cc",
|
|
"test-disasm-ia32.cc",
|
|
"test-log-stack-tracer.cc",
|
|
]
|
|
} else if (v8_current_cpu == "mips") {
|
|
sources += [ ### gcmole(arch:mips) ###
|
|
"test-assembler-mips.cc",
|
|
"test-disasm-mips.cc",
|
|
"test-macro-assembler-mips.cc",
|
|
]
|
|
} else if (v8_current_cpu == "mipsel") {
|
|
sources += [ ### gcmole(arch:mipsel) ###
|
|
"test-assembler-mips.cc",
|
|
"test-disasm-mips.cc",
|
|
"test-macro-assembler-mips.cc",
|
|
]
|
|
} else if (v8_current_cpu == "mips64") {
|
|
sources += [ ### gcmole(arch:mips64) ###
|
|
"test-assembler-mips64.cc",
|
|
"test-disasm-mips64.cc",
|
|
"test-macro-assembler-mips64.cc",
|
|
]
|
|
} else if (v8_current_cpu == "mips64el") {
|
|
sources += [ ### gcmole(arch:mips64el) ###
|
|
"test-assembler-mips64.cc",
|
|
"test-disasm-mips64.cc",
|
|
"test-macro-assembler-mips64.cc",
|
|
]
|
|
} else if (v8_current_cpu == "x64") {
|
|
sources += [ ### gcmole(arch:x64) ###
|
|
"test-assembler-x64.cc",
|
|
"test-disasm-x64.cc",
|
|
"test-log-stack-tracer.cc",
|
|
"test-macro-assembler-x64.cc",
|
|
]
|
|
if (is_win) {
|
|
sources += [ "test-stack-unwinding-win64.cc" ]
|
|
}
|
|
} else if (v8_current_cpu == "ppc" || v8_current_cpu == "ppc64") {
|
|
sources += [ ### gcmole(arch:ppc) ###
|
|
"test-assembler-ppc.cc",
|
|
"test-disasm-ppc.cc",
|
|
]
|
|
} else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") {
|
|
sources += [ ### gcmole(arch:s390) ###
|
|
"test-assembler-s390.cc",
|
|
"test-disasm-s390.cc",
|
|
]
|
|
} else if (v8_current_cpu == "riscv64") {
|
|
sources += [ ### gcmole(arch:riscv64) ###
|
|
"test-assembler-riscv64.cc",
|
|
"test-disasm-riscv64.cc",
|
|
"test-helper-riscv64.cc",
|
|
"test-macro-assembler-riscv64.cc",
|
|
"test-simple-riscv64.cc",
|
|
]
|
|
}
|
|
|
|
if (v8_use_perfetto) {
|
|
# Perfetto doesn't use TraceObject.
|
|
sources -= [ "test-trace-event.cc" ]
|
|
}
|
|
|
|
configs = [
|
|
"../..:cppgc_base_config",
|
|
"../..:external_config",
|
|
"../..:internal_config_base",
|
|
"../..:v8_tracing_config",
|
|
":cctest_sources_config",
|
|
]
|
|
|
|
public_deps = [
|
|
":cctest_headers",
|
|
"..:common_test_headers",
|
|
"../..:v8_for_testing",
|
|
"../..:v8_libbase",
|
|
"../..:v8_libplatform",
|
|
"../../tools/debug_helper:v8_debug_helper",
|
|
"//build/win:default_exe_manifest",
|
|
]
|
|
|
|
if (v8_enable_webassembly) {
|
|
sources += [
|
|
"../common/wasm/flag-utils.h",
|
|
"../common/wasm/test-signatures.h",
|
|
"../common/wasm/wasm-macro-gen.h",
|
|
"compiler/test-multiple-return.cc",
|
|
|
|
# test-run-native-calls uses wasm's LinkageAllocator.
|
|
"compiler/test-run-native-calls.cc",
|
|
"test-api-wasm.cc",
|
|
"test-js-to-wasm.cc",
|
|
"wasm/test-backing-store.cc",
|
|
"wasm/test-c-wasm-entry.cc",
|
|
"wasm/test-compilation-cache.cc",
|
|
"wasm/test-gc.cc",
|
|
"wasm/test-grow-memory.cc",
|
|
"wasm/test-jump-table-assembler.cc",
|
|
"wasm/test-liftoff-inspection.cc",
|
|
"wasm/test-run-wasm-64.cc",
|
|
"wasm/test-run-wasm-asmjs.cc",
|
|
"wasm/test-run-wasm-atomics.cc",
|
|
"wasm/test-run-wasm-atomics64.cc",
|
|
"wasm/test-run-wasm-bulk-memory.cc",
|
|
"wasm/test-run-wasm-exceptions.cc",
|
|
"wasm/test-run-wasm-interpreter.cc",
|
|
"wasm/test-run-wasm-js.cc",
|
|
"wasm/test-run-wasm-memory64.cc",
|
|
"wasm/test-run-wasm-module.cc",
|
|
"wasm/test-run-wasm-sign-extension.cc",
|
|
"wasm/test-run-wasm-simd-liftoff.cc",
|
|
"wasm/test-run-wasm-simd-scalar-lowering.cc",
|
|
"wasm/test-run-wasm-simd.cc",
|
|
"wasm/test-run-wasm-wrappers.cc",
|
|
"wasm/test-run-wasm.cc",
|
|
"wasm/test-streaming-compilation.cc",
|
|
"wasm/test-wasm-breakpoints.cc",
|
|
"wasm/test-wasm-codegen.cc",
|
|
"wasm/test-wasm-import-wrapper-cache.cc",
|
|
"wasm/test-wasm-metrics.cc",
|
|
"wasm/test-wasm-serialization.cc",
|
|
"wasm/test-wasm-shared-engine.cc",
|
|
"wasm/test-wasm-stack.cc",
|
|
"wasm/test-wasm-trap-position.cc",
|
|
"wasm/wasm-atomics-utils.h",
|
|
"wasm/wasm-run-utils.cc",
|
|
"wasm/wasm-run-utils.h",
|
|
]
|
|
public_deps += [ "../..:wasm_test_common" ]
|
|
}
|
|
|
|
defines = []
|
|
deps = [
|
|
"../..:run_torque",
|
|
"../..:v8_shared_internal_headers",
|
|
]
|
|
|
|
if (v8_enable_i18n_support) {
|
|
defines += [ "V8_INTL_SUPPORT" ]
|
|
public_deps += [ "//third_party/icu" ]
|
|
} else {
|
|
sources -= [ "test-intl.cc" ]
|
|
}
|
|
|
|
cflags = []
|
|
if (v8_current_cpu == "ppc" || v8_current_cpu == "ppc64" ||
|
|
v8_current_cpu == "arm" || v8_current_cpu == "arm64" ||
|
|
v8_current_cpu == "s390" || v8_current_cpu == "s390x" ||
|
|
v8_current_cpu == "mips" || v8_current_cpu == "mips64" ||
|
|
v8_current_cpu == "mipsel" || v8_current_cpu == "mipsel64" ||
|
|
v8_current_cpu == "riscv64") {
|
|
# Disable fmadd/fmsub so that expected results match generated code in
|
|
# RunFloat64MulAndFloat64Add1 and friends.
|
|
if (!is_win) {
|
|
cflags += [ "-ffp-contract=off" ]
|
|
}
|
|
}
|
|
|
|
if (is_win) {
|
|
# This warning is benignly triggered by the U16 and U32 macros in
|
|
# bytecode-utils.h.
|
|
# C4309: 'static_cast': truncation of constant value
|
|
cflags += [ "/wd4309" ]
|
|
|
|
# MSVS wants this for gay-{precision,shortest}.cc.
|
|
cflags += [ "/bigobj" ]
|
|
|
|
if (symbol_level == 2) {
|
|
sources += [ "test-v8windbg.cc" ]
|
|
deps += [ "../../tools/v8windbg:v8windbg_test" ]
|
|
}
|
|
}
|
|
|
|
if (v8_use_perfetto) {
|
|
deps += [
|
|
# TODO(skyostil): Migrate to protozero.
|
|
"//third_party/perfetto/protos/perfetto/trace:lite",
|
|
]
|
|
}
|
|
}
|
|
|
|
v8_executable("generate-bytecode-expectations") {
|
|
testonly = true
|
|
|
|
sources = [
|
|
"interpreter/bytecode-expectations-printer.cc",
|
|
"interpreter/bytecode-expectations-printer.h",
|
|
"interpreter/generate-bytecode-expectations.cc",
|
|
]
|
|
|
|
configs = [
|
|
"../..:external_config",
|
|
"../..:internal_config_base",
|
|
]
|
|
|
|
deps = [
|
|
":cctest_headers",
|
|
"../..:v8",
|
|
"../..:v8_libbase",
|
|
"../..:v8_libplatform",
|
|
"//build/win:default_exe_manifest",
|
|
]
|
|
|
|
data = [ "interpreter/bytecode_expectations/" ]
|
|
}
|