a33353a00f
Remove IsBlockTerminator and introduce InstructionScheduler::AddTerminator in order to handle block terminator instructions. Instead of the kBlockTerminator flags, we now rely on Instruction::IsTrap(), Instruction::IsDeoptimizeCall() and explicitly denoting block terminators when adding them with InstructionScheduler::AddTerminator(). IsBlockTerminator incorrectly included deopts when they were not at the end of a block, which meant that an instruction with side effects could have been reordered with respect to a deopt as the deopt was not identified correctly. Since the snapshot does not contain deopts, this is not causing any problems at the moment (the scheduler is only enabled on the snapshot). Change-Id: I1c2dad748a9398a3355630d9a542f4ac89afaa42 Reviewed-on: https://chromium-review.googlesource.com/960501 Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com> Cr-Commit-Position: refs/heads/master@{#52019}
471 lines
14 KiB
Plaintext
471 lines
14 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-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-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-retpoline.cc",
|
|
"compiler/test-run-stackcheck.cc",
|
|
"compiler/test-run-stubs.cc",
|
|
"compiler/test-run-tail-calls.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-embedder-tracing.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",
|
|
"heap/test-weak-references.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-isolate-independent-builtins.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-sign-extension.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-atomics-utils.h",
|
|
"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",
|
|
"wasm/test-run-wasm-atomics64.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",
|
|
]
|
|
}
|