| # Copyright 2014 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| import("//build/buildflag_header.gni") |
| import("//build/config/compiler/compiler.gni") |
| import("//build/config/sanitizers/sanitizers.gni") |
| import("//testing/test.gni") |
| import("//third_party/blink/public/public_features.gni") |
| import("//third_party/blink/renderer/platform/platform.gni") |
| import("//v8/gni/v8.gni") |
| |
| declare_args() { |
| # Whether the blink heap code is compiled into a shared library. |
| # Embedders like CEF use this flag to include blink in a shared library under |
| # non-component build. |
| blink_heap_inside_shared_library = is_component_build |
| } |
| |
| assert(blink_heap_inside_shared_library || !is_component_build, |
| "blink_heap_inside_shared_library can not be false in component build.") |
| |
| buildflag_header("blink_heap_buildflags") { |
| header = "heap_buildflags.h" |
| header_dir = "third_party/blink/renderer/platform/heap" |
| |
| flags = [ |
| "VERBOSE_PERSISTENT=$cppgc_enable_object_names", |
| "BLINK_HEAP_INSIDE_SHARED_LIBRARY=$blink_heap_inside_shared_library", |
| ] |
| } |
| |
| blink_platform_sources("heap") { |
| sources = [ |
| "blink_gc_memory_dump_provider.cc", |
| "blink_gc_memory_dump_provider.h", |
| "collection_support/clear_collection_scope.h", |
| "collection_support/heap_deque.h", |
| "collection_support/heap_hash_counted_set.h", |
| "collection_support/heap_hash_map.h", |
| "collection_support/heap_hash_set.h", |
| "collection_support/heap_hash_table_backing.h", |
| "collection_support/heap_linked_hash_set.h", |
| "collection_support/heap_linked_stack.h", |
| "collection_support/heap_vector.h", |
| "collection_support/heap_vector_backing.h", |
| "collection_support/utils.h", |
| "cross_thread_handle.h", |
| "cross_thread_handle_internal.h", |
| "cross_thread_persistent.h", |
| "custom_spaces.cc", |
| "custom_spaces.h", |
| "disallow_new_wrapper.h", |
| "forward.h", |
| "garbage_collected.h", |
| "heap_allocator_impl.h", |
| "heap_barrier_callback.h", |
| "heap_bind.h", |
| "heap_traits.h", |
| "member.h", |
| "persistent.h", |
| "prefinalizer.h", |
| "process_heap.cc", |
| "process_heap.h", |
| "self_keep_alive.h", |
| "thread_local.h", |
| "thread_state.cc", |
| "thread_state.h", |
| "thread_state_scopes.h", |
| "thread_state_storage.cc", |
| "thread_state_storage.h", |
| "trace_traits.h", |
| "visitor.h", |
| "weak_cell.h", |
| "write_barrier.h", |
| ] |
| |
| deps = [ |
| ":blink_heap_buildflags", |
| "//base", |
| "//gin", |
| "//third_party/blink/renderer/platform:make_platform_generated", |
| "//third_party/icu", |
| |
| # Dependency on V8 which transitively depends on cppgc but exposes |
| # JS-related C++ heap through V8's Isolate. |
| "//v8", |
| ] |
| |
| if (!is_debug && !optimize_for_size) { |
| configs -= [ "//build/config/compiler:default_optimization" ] |
| configs += [ "//build/config/compiler:optimize_max" ] |
| } else if (using_mismatched_sample_profile) { |
| configs -= [ "//build/config/compiler:afdo_optimize_size" ] |
| } |
| |
| visibility = [ |
| "//third_party/blink/renderer/platform", |
| "//third_party/blink/renderer/platform/instrumentation", |
| "//third_party/blink/renderer/platform/loader", |
| "//third_party/blink/renderer/platform/scheduler", |
| ] |
| } |
| |
| source_set("test_support") { |
| testonly = true |
| |
| sources = [ |
| "heap_test_objects.cc", |
| "heap_test_objects.h", |
| "heap_test_platform.h", |
| "heap_test_utilities.cc", |
| "heap_test_utilities.h", |
| ] |
| |
| deps = [ |
| ":blink_heap_buildflags", |
| "//testing/gtest", |
| "//third_party/blink/public/mojom:mojom_platform_blink_headers", |
| "//third_party/blink/renderer/platform", |
| "//third_party/blink/renderer/platform:bindings_buildflags", |
| ] |
| |
| # TODO(v8:11952): Switch to `//v8:v8_for_testing` as target once it properly |
| # depends on v8 without duplicating the whole library which causes ODR |
| # violations when `//v8:v8` is also pulled in otherwise. |
| deps += [ "//v8" ] |
| |
| public_deps = [ "//base/test:test_support" ] |
| } |
| |
| test("blink_heap_unittests") { |
| deps = [ ":blink_heap_unittests_sources" ] |
| |
| if (is_android) { |
| deps += [ |
| "//content/shell/android:content_shell_assets", |
| "//net/android:net_java", |
| "//ui/android:ui_full_java", |
| ] |
| } |
| |
| if (is_fuchsia) { |
| additional_manifest_fragments = [ |
| "//build/config/fuchsia/test/test_fonts.shard.test-cml", |
| |
| # Oilpan reuses V8's v8::PageAllocator which generally requires JIT |
| # permissions. |
| "//build/config/fuchsia/test/mark_vmo_executable.shard.test-cml", |
| ] |
| } |
| } |
| |
| source_set("blink_heap_unittests_sources") { |
| testonly = true |
| |
| sources = [ |
| "../testing/run_all_tests.cc", |
| "test/blink_gc_memory_dump_provider_test.cc", |
| "test/concurrent_marking_test.cc", |
| "test/cross_thread_handle_test.cc", |
| "test/heap_bind_test.cc", |
| "test/heap_compact_test.cc", |
| "test/heap_linked_stack_test.cc", |
| "test/heap_test.cc", |
| "test/heap_traits_test.cc", |
| "test/incremental_marking_test.cc", |
| "test/persistent_test.cc", |
| "test/weak_cell_test.cc", |
| "test/weakness_marking_test.cc", |
| ] |
| |
| if (cppgc_enable_young_generation) { |
| sources += [ "test/minor_gc_test.cc" ] |
| } |
| |
| configs += [ |
| "//third_party/blink/renderer/platform/wtf:wtf_config", |
| "//third_party/blink/renderer:config", |
| "//third_party/blink/renderer:inside_blink", |
| ] |
| |
| deps = [ |
| "//base", |
| "//base/test:test_support", |
| "//gin", |
| "//mojo/core/embedder", |
| "//skia:test_fonts", |
| "//testing/gmock", |
| "//testing/gtest", |
| "//third_party/blink/renderer/platform:test_support", |
| "//third_party/blink/renderer/platform/wtf", |
| ] |
| } |
| |
| test("blink_heap_perftests") { |
| configs += [ "//build/config/compiler:thinlto_optimize_max" ] |
| |
| deps = [ ":blink_heap_perftests_sources" ] |
| |
| if (is_android) { |
| deps += [ |
| "//content/shell/android:content_shell_assets", |
| "//net/android:net_java", |
| "//ui/android:ui_full_java", |
| ] |
| } |
| |
| if (is_fuchsia) { |
| # Oilpan reuses V8's v8::PageAllocator which generally requires JIT |
| # permissions. |
| additional_manifest_fragments = |
| [ "//build/config/fuchsia/test/mark_vmo_executable.shard.test-cml" ] |
| } |
| } |
| |
| source_set("blink_heap_perftests_sources") { |
| testonly = true |
| |
| sources = [ |
| "../testing/blink_perf_test_suite.cc", |
| "../testing/blink_perf_test_suite.h", |
| "../testing/run_all_perf_tests.cc", |
| "test/allocation_perftest.cc", |
| "test/write_barrier_perftest.cc", |
| ] |
| |
| configs += [ |
| "//third_party/blink/renderer/platform/wtf:wtf_config", |
| "//third_party/blink/renderer:config", |
| "//third_party/blink/renderer:inside_blink", |
| ] |
| |
| deps = [ |
| "//gin", |
| "//testing/gtest", |
| "//testing/perf", |
| "//third_party/blink/renderer/platform:test_support", |
| "//third_party/blink/renderer/platform/wtf", |
| ] |
| } |