1719ecb9dc
Like CSP flag 'unsafe-eval', which communicates if both JS source files and WASM binary files may be compiled, this CL adds a similar flag for the compilation of WASM binary files. That is, a WASM binary file will be compiled only if the new flag is defined, or the flag for 'unsafe-eval' allows it. These flags are implemented as callback functions on the isolate. The callbacks get a (CSP) context, and a string, and returns the corresponding value of the flag. Both callbacks are initialized with the nullptr, and is used to communicate that no CSP policy is defined. This allows this concept to work, independent of it running in Chrome. It also does a small clean up in api.cc to use macro CALLER_SETTERS, instead of explicit code when appropriate. Bug: v8:7041 Cq-Include-Trybots: master.tryserver.chromium.linux:linux_chromium_rel_ng Change-Id: Idb3356574ae2a298057e6b7bccbd3492831952ae Reviewed-on: https://chromium-review.googlesource.com/759162 Reviewed-by: Bill Budge <bbudge@chromium.org> Reviewed-by: Eric Holk <eholk@chromium.org> Commit-Queue: Karl Schimpf <kschimpf@chromium.org> Cr-Commit-Position: refs/heads/master@{#49243}
462 lines
13 KiB
Plaintext
462 lines
13 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")
|
|
|
|
v8_executable("cctest") {
|
|
testonly = true
|
|
deps = [
|
|
":cctest_sources",
|
|
]
|
|
configs = [
|
|
"../..:external_config",
|
|
"../..:internal_config_base",
|
|
]
|
|
|
|
ldflags = []
|
|
|
|
# TODO(machenbach): Translate from gyp.
|
|
#["OS=="aix"", {
|
|
# "ldflags": [ "-Wl,-bbigtoc" ],
|
|
#}],
|
|
|
|
# crbug.com/676417: Suppress symbol import warning from linker.
|
|
if (is_win && is_component_build) {
|
|
ldflags += [
|
|
"/ignore:4217",
|
|
"/ignore:4049",
|
|
]
|
|
remove_configs = [ "//build/config/win:default_incremental_linking" ]
|
|
configs += [ "//build/config/win:no_incremental_linking" ]
|
|
}
|
|
}
|
|
|
|
v8_source_set("cctest_sources") {
|
|
testonly = true
|
|
|
|
sources = [
|
|
"$target_gen_dir/resources.cc",
|
|
|
|
### gcmole(all) ###
|
|
"../../test/common/wasm/flag-utils.h",
|
|
"../../test/common/wasm/test-signatures.h",
|
|
"../../test/common/wasm/wasm-macro-gen.h",
|
|
"cctest.cc",
|
|
"cctest.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/graph-builder-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-gap-resolver.cc",
|
|
"compiler/test-graph-visualizer.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-multiple-return.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-native-calls.cc",
|
|
"compiler/test-run-stackcheck.cc",
|
|
"compiler/test-run-stubs.cc",
|
|
"compiler/test-run-unwinding-info.cc",
|
|
"compiler/test-run-variables.cc",
|
|
"compiler/test-run-wasm-machops.cc",
|
|
"compiler/value-helper.cc",
|
|
"compiler/value-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-marking.cc",
|
|
"heap/test-heap.cc",
|
|
"heap/test-incremental-marking.cc",
|
|
"heap/test-invalidated-slots.cc",
|
|
"heap/test-lab.cc",
|
|
"heap/test-mark-compact.cc",
|
|
"heap/test-page-promotion.cc",
|
|
"heap/test-spaces.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",
|
|
"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-interceptors.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-stub-assembler.cc",
|
|
"test-compiler.cc",
|
|
"test-constantpool.cc",
|
|
"test-conversions.cc",
|
|
"test-cpu-profiler.cc",
|
|
"test-date.cc",
|
|
"test-debug.cc",
|
|
"test-decls.cc",
|
|
"test-deoptimization.cc",
|
|
"test-dictionary.cc",
|
|
"test-diy-fp.cc",
|
|
"test-double.cc",
|
|
"test-dtoa.cc",
|
|
"test-elements-kind.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-identity-map.cc",
|
|
"test-inobject-slack-tracking.cc",
|
|
"test-intl.cc",
|
|
"test-liveedit.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-platform.cc",
|
|
"test-profile-generator.cc",
|
|
"test-random-number-generator.cc",
|
|
"test-regexp.cc",
|
|
"test-representation.cc",
|
|
"test-sampler-api.cc",
|
|
"test-serialize.cc",
|
|
"test-strings.cc",
|
|
"test-strtod.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-unbound-queue.cc",
|
|
"test-unboxed-doubles.cc",
|
|
"test-unscopables-hidden-prototype.cc",
|
|
"test-usecounters.cc",
|
|
"test-utils.cc",
|
|
"test-version.cc",
|
|
"test-weakmaps.cc",
|
|
"test-weaksets.cc",
|
|
"trace-extension.cc",
|
|
"trace-extension.h",
|
|
"types-fuzz.h",
|
|
"unicode-helpers.h",
|
|
"wasm/test-c-wasm-entry.cc",
|
|
"wasm/test-run-wasm-64.cc",
|
|
"wasm/test-run-wasm-asmjs.cc",
|
|
"wasm/test-run-wasm-atomics.cc",
|
|
"wasm/test-run-wasm-interpreter.cc",
|
|
"wasm/test-run-wasm-js.cc",
|
|
"wasm/test-run-wasm-module.cc",
|
|
"wasm/test-run-wasm-relocation.cc",
|
|
"wasm/test-run-wasm-simd.cc",
|
|
"wasm/test-run-wasm.cc",
|
|
"wasm/test-streaming-compilation.cc",
|
|
"wasm/test-wasm-breakpoints.cc",
|
|
"wasm/test-wasm-codegen.cc",
|
|
"wasm/test-wasm-interpreter-entry.cc",
|
|
"wasm/test-wasm-stack.cc",
|
|
"wasm/test-wasm-trap-position.cc",
|
|
"wasm/wasm-run-utils.cc",
|
|
"wasm/wasm-run-utils.h",
|
|
]
|
|
|
|
if (use_jumbo_build) {
|
|
jumbo_excluded_sources = [
|
|
# TODO(mostynb@opera.com): figure out the jumbo issues with these source
|
|
# files, and include them in jumbo compilation units.
|
|
"interpreter/bytecode-expectations-printer.cc",
|
|
"interpreter/bytecode-expectations-printer.h",
|
|
"interpreter/test-bytecode-generator.cc",
|
|
"test-api.cc",
|
|
"test-api.h",
|
|
]
|
|
}
|
|
|
|
if (v8_current_cpu == "arm") {
|
|
sources += [ ### gcmole(arch:arm) ###
|
|
"assembler-helper-arm.cc",
|
|
"assembler-helper-arm.h",
|
|
"test-assembler-arm.cc",
|
|
"test-code-stubs-arm.cc",
|
|
"test-code-stubs.cc",
|
|
"test-code-stubs.h",
|
|
"test-disasm-arm.cc",
|
|
"test-macro-assembler-arm.cc",
|
|
"test-run-wasm-relocation-arm.cc",
|
|
"test-sync-primitives-arm.cc",
|
|
]
|
|
} else if (v8_current_cpu == "arm64") {
|
|
sources += [ ### gcmole(arch:arm64) ###
|
|
"test-assembler-arm64.cc",
|
|
"test-code-stubs-arm64.cc",
|
|
"test-code-stubs.cc",
|
|
"test-code-stubs.h",
|
|
"test-disasm-arm64.cc",
|
|
"test-fuzz-arm64.cc",
|
|
"test-javascript-arm64.cc",
|
|
"test-js-arm64-variables.cc",
|
|
"test-run-wasm-relocation-arm64.cc",
|
|
"test-sync-primitives-arm64.cc",
|
|
"test-utils-arm64.cc",
|
|
"test-utils-arm64.h",
|
|
]
|
|
} else if (v8_current_cpu == "x86") {
|
|
sources += [ ### gcmole(arch:ia32) ###
|
|
"test-assembler-ia32.cc",
|
|
"test-code-stubs-ia32.cc",
|
|
"test-code-stubs.cc",
|
|
"test-code-stubs.h",
|
|
"test-disasm-ia32.cc",
|
|
"test-log-stack-tracer.cc",
|
|
"test-run-wasm-relocation-ia32.cc",
|
|
]
|
|
} else if (v8_current_cpu == "mips") {
|
|
sources += [ ### gcmole(arch:mips) ###
|
|
"test-assembler-mips.cc",
|
|
"test-code-stubs-mips.cc",
|
|
"test-code-stubs.cc",
|
|
"test-code-stubs.h",
|
|
"test-disasm-mips.cc",
|
|
"test-macro-assembler-mips.cc",
|
|
]
|
|
} else if (v8_current_cpu == "mipsel") {
|
|
sources += [ ### gcmole(arch:mipsel) ###
|
|
"test-assembler-mips.cc",
|
|
"test-code-stubs-mips.cc",
|
|
"test-code-stubs.cc",
|
|
"test-code-stubs.h",
|
|
"test-disasm-mips.cc",
|
|
"test-macro-assembler-mips.cc",
|
|
]
|
|
} else if (v8_current_cpu == "mips64") {
|
|
sources += [ ### gcmole(arch:mips64) ###
|
|
"test-assembler-mips64.cc",
|
|
"test-code-stubs-mips64.cc",
|
|
"test-code-stubs.cc",
|
|
"test-code-stubs.h",
|
|
"test-disasm-mips64.cc",
|
|
"test-macro-assembler-mips64.cc",
|
|
]
|
|
} else if (v8_current_cpu == "mips64el") {
|
|
sources += [ ### gcmole(arch:mips64el) ###
|
|
"test-assembler-mips64.cc",
|
|
"test-code-stubs-mips64.cc",
|
|
"test-code-stubs.cc",
|
|
"test-code-stubs.h",
|
|
"test-disasm-mips64.cc",
|
|
"test-macro-assembler-mips64.cc",
|
|
]
|
|
} else if (v8_current_cpu == "x64") {
|
|
sources += [ ### gcmole(arch:x64) ###
|
|
"test-assembler-x64.cc",
|
|
"test-code-stubs-x64.cc",
|
|
"test-code-stubs.cc",
|
|
"test-code-stubs.h",
|
|
"test-disasm-x64.cc",
|
|
"test-log-stack-tracer.cc",
|
|
"test-macro-assembler-x64.cc",
|
|
"test-run-wasm-relocation-x64.cc",
|
|
]
|
|
} else if (v8_current_cpu == "ppc" || v8_current_cpu == "ppc64") {
|
|
sources += [ ### gcmole(arch:ppc) ###
|
|
"test-assembler-ppc.cc",
|
|
"test-code-stubs.cc",
|
|
"test-code-stubs.h",
|
|
"test-disasm-ppc.cc",
|
|
]
|
|
} else if (v8_current_cpu == "s390" || v8_current_cpu == "s390x") {
|
|
sources += [ ### gcmole(arch:s390) ###
|
|
"test-assembler-s390.cc",
|
|
"test-code-stubs.cc",
|
|
"test-code-stubs.h",
|
|
"test-disasm-s390.cc",
|
|
]
|
|
}
|
|
|
|
configs = [
|
|
"../..:external_config",
|
|
"../..:internal_config_base",
|
|
]
|
|
|
|
public_deps = [
|
|
":resources",
|
|
"../..:v8_initializers",
|
|
"../..:v8_libbase",
|
|
"../..:v8_libplatform",
|
|
"../..:wasm_module_runner",
|
|
"//build/config:exe_and_shlib_deps",
|
|
"//build/win:default_exe_manifest",
|
|
]
|
|
|
|
defines = []
|
|
deps = []
|
|
|
|
if (is_component_build) {
|
|
# cctest can't be built against a shared library, so we
|
|
# need to depend on the underlying static target in that case.
|
|
deps += [ "../..:v8_maybe_snapshot" ]
|
|
defines += [ "BUILDING_V8_SHARED" ]
|
|
} else {
|
|
deps += [ "../..:v8" ]
|
|
}
|
|
|
|
if (v8_enable_i18n_support) {
|
|
defines += [ "V8_INTL_SUPPORT" ]
|
|
} 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") {
|
|
# Disable fmadd/fmsub so that expected results match generated code in
|
|
# RunFloat64MulAndFloat64Add1 and friends.
|
|
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" ]
|
|
}
|
|
}
|
|
|
|
action("resources") {
|
|
visibility = [ ":*" ] # Only targets in this file can depend on this.
|
|
|
|
script = "../../tools/js2c.py"
|
|
|
|
# The script depends on this other script, this rule causes a rebuild if it
|
|
# changes.
|
|
inputs = [
|
|
"../../tools/jsmin.py",
|
|
]
|
|
|
|
# NOSORT
|
|
sources = [
|
|
"../../tools/splaytree.js",
|
|
"../../tools/codemap.js",
|
|
"../../tools/csvparser.js",
|
|
"../../tools/consarray.js",
|
|
"../../tools/profile.js",
|
|
"../../tools/profile_view.js",
|
|
"../../tools/arguments.js",
|
|
"../../tools/logreader.js",
|
|
"log-eq-of-logging-and-traversal.js",
|
|
]
|
|
|
|
outputs = [
|
|
"$target_gen_dir/resources.cc",
|
|
]
|
|
|
|
args = [
|
|
rebase_path("$target_gen_dir/resources.cc", root_build_dir),
|
|
"TEST",
|
|
]
|
|
args += rebase_path(sources, root_build_dir)
|
|
}
|
|
|
|
v8_executable("generate-bytecode-expectations") {
|
|
sources = [
|
|
"interpreter/bytecode-expectations-printer.cc",
|
|
"interpreter/bytecode-expectations-printer.h",
|
|
"interpreter/generate-bytecode-expectations.cc",
|
|
]
|
|
|
|
configs = [
|
|
"../..:external_config",
|
|
"../..:internal_config_base",
|
|
]
|
|
|
|
deps = [
|
|
"../..:v8",
|
|
"../..:v8_libbase",
|
|
"../..:v8_libplatform",
|
|
"//build/config:exe_and_shlib_deps",
|
|
"//build/win:default_exe_manifest",
|
|
]
|
|
}
|