| # Copyright 2014 The Chromium 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("//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") |
| |
| buildflag_header("blink_heap_buildflags") { |
| header = "heap_buildflags.h" |
| header_dir = "third_party/blink/renderer/platform/heap" |
| |
| flags = [ |
| "BLINK_HEAP_VERIFICATION=$enable_blink_heap_verification", |
| "BLINK_HEAP_YOUNG_GENERATION=$enable_blink_heap_young_generation", |
| ] |
| } |
| |
| source_set("heap_unsanitized") { |
| if (is_asan) { |
| configs -= [ "//build/config/sanitizers:default_sanitizer_flags" ] |
| } |
| configs += |
| [ "//third_party/blink/renderer/platform:blink_platform_implementation" ] |
| |
| # std::atomic<>:: functions must be inlined. |
| configs -= [ "//build/config/compiler:default_optimization" ] |
| configs += [ "//build/config/compiler:optimize_max" ] |
| if (using_mismatched_sample_profile) { |
| configs -= [ "//build/config/compiler:afdo_optimize_size" ] |
| } |
| |
| if (!enable_blink_heap_use_v8_oilpan) { |
| sources = [ |
| "impl/unsanitized_atomic.cc", |
| "impl/unsanitized_atomic.h", |
| ] |
| } else { |
| sources = [] |
| } |
| |
| deps = [ |
| "//base", |
| "//third_party/blink/renderer/platform/wtf", |
| ] |
| public_deps = [ "//third_party/blink/renderer/platform:platform_export" ] |
| } |
| |
| blink_platform_sources("heap") { |
| configs += [ "//build/config/compiler:noshadowing" ] |
| |
| sources = [ |
| "blink_gc_memory_dump_provider.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_list_hash_set.h", |
| "collection_support/heap_vector.h", |
| "collection_support/heap_vector_backing.h", |
| "disallow_new_wrapper.h", |
| "garbage_collected.h", |
| "gc_task_runner.h", |
| "handle.h", |
| "heap.h", |
| "heap_allocator.h", |
| "heap_allocator_impl.h", |
| "heap_stats_collector.h", |
| "heap_traits.h", |
| "member.h", |
| "persistent.h", |
| "process_heap.h", |
| "self_keep_alive.h", |
| "thread_state.h", |
| "thread_state_scopes.h", |
| "unified_heap_controller.h", |
| "unified_heap_marking_visitor.h", |
| "visitor.h", |
| ] |
| |
| deps = [ |
| ":blink_heap_buildflags", |
| "//base", |
| "//third_party/blink/renderer/platform:make_platform_generated", |
| "//third_party/blink/renderer/platform/heap:heap_unsanitized", |
| "//third_party/blink/renderer/platform/heap/asm", |
| "//third_party/blink/renderer/platform/wtf:buildflags", |
| "//third_party/icu", |
| "//v8", |
| ] |
| |
| if (enable_blink_heap_use_v8_oilpan) { |
| sources += [ |
| "v8_wrapper/blink_gc.h", |
| "v8_wrapper/blink_gc_memory_dump_provider.h", |
| "v8_wrapper/disallow_new_wrapper.h", |
| "v8_wrapper/garbage_collected.h", |
| "v8_wrapper/gc_task_runner.h", |
| "v8_wrapper/heap.h", |
| "v8_wrapper/heap_allocator_impl.h", |
| "v8_wrapper/heap_stats_collector.h", |
| "v8_wrapper/heap_traits.h", |
| "v8_wrapper/member.h", |
| "v8_wrapper/persistent.h", |
| "v8_wrapper/process_heap.h", |
| "v8_wrapper/thread_state.cc", |
| "v8_wrapper/thread_state.h", |
| "v8_wrapper/thread_state_scopes.h", |
| "v8_wrapper/unified_heap_controller.h", |
| "v8_wrapper/unified_heap_marking_visitor.h", |
| "v8_wrapper/visitor.h", |
| ] |
| |
| # Dependency on V8 which transitively depends on cppgc but exposes JS-related C++ heap through V8's Isolate. |
| deps += [ "//v8" ] |
| } else { |
| sources += [ |
| "impl/atomic_entry_flag.h", |
| "impl/blink_gc.cc", |
| "impl/blink_gc.h", |
| "impl/blink_gc_memory_dump_provider.cc", |
| "impl/blink_gc_memory_dump_provider.h", |
| "impl/disallow_new_wrapper.h", |
| "impl/finalizer_traits.h", |
| "impl/garbage_collected.h", |
| "impl/gc_info.cc", |
| "impl/gc_info.h", |
| "impl/gc_task_runner.h", |
| "impl/heap.cc", |
| "impl/heap.h", |
| "impl/heap_allocator_impl.cc", |
| "impl/heap_allocator_impl.h", |
| "impl/heap_compact.cc", |
| "impl/heap_compact.h", |
| "impl/heap_page.cc", |
| "impl/heap_page.h", |
| "impl/heap_stats_collector.cc", |
| "impl/heap_stats_collector.h", |
| "impl/heap_traits.h", |
| "impl/marking_scheduling_oracle.cc", |
| "impl/marking_scheduling_oracle.h", |
| "impl/marking_verifier.cc", |
| "impl/marking_verifier.h", |
| "impl/marking_visitor.cc", |
| "impl/marking_visitor.h", |
| "impl/member.h", |
| "impl/name_traits.h", |
| "impl/page_bloom_filter.h", |
| "impl/page_memory.cc", |
| "impl/page_memory.h", |
| "impl/page_pool.cc", |
| "impl/page_pool.h", |
| "impl/persistent.h", |
| "impl/persistent_node.cc", |
| "impl/persistent_node.h", |
| "impl/process_heap.cc", |
| "impl/process_heap.h", |
| "impl/thread_state.cc", |
| "impl/thread_state.h", |
| "impl/thread_state_scopes.h", |
| "impl/thread_state_statistics.cc", |
| "impl/thread_state_statistics.h", |
| "impl/threading_traits.h", |
| "impl/trace_traits.h", |
| "impl/unified_heap_controller.cc", |
| "impl/unified_heap_controller.h", |
| "impl/unified_heap_marking_visitor.cc", |
| "impl/unified_heap_marking_visitor.h", |
| "impl/visitor.h", |
| "impl/worklist.h", |
| ] |
| } |
| |
| 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:platform", |
| "//third_party/blink/renderer/platform/instrumentation:instrumentation", |
| "//third_party/blink/renderer/platform/loader:loader", |
| "//third_party/blink/renderer/platform/scheduler:scheduler", |
| ] |
| } |
| |
| source_set("test_support") { |
| testonly = true |
| |
| sources = [ |
| "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:bindings_buildflags", |
| "//third_party/blink/renderer/platform:platform", |
| "//third_party/blink/renderer/platform/wtf:buildflags", |
| ] |
| public_deps = [ "//base/test:test_support" ] |
| } |
| |
| test("blink_heap_unittests") { |
| deps = [ ":blink_heap_unittests_sources" ] |
| if (is_android) { |
| deps += [ |
| "//base:base_java", |
| "//content/shell/android:content_shell_assets", |
| "//net/android:net_java", |
| "//ui/android:ui_full_java", |
| ] |
| } |
| } |
| |
| source_set("blink_heap_unittests_sources") { |
| testonly = true |
| sources = [ |
| "../testing/run_all_tests.cc", |
| "test/blink_gc_memory_dump_provider_test.cc", |
| "test/card_table_test.cc", |
| "test/concurrent_marking_test.cc", |
| "test/gc_info_test.cc", |
| "test/heap_compact_test.cc", |
| "test/heap_linked_stack_test.cc", |
| "test/heap_stats_collector_test.cc", |
| "test/heap_test.cc", |
| "test/heap_thread_test.cc", |
| "test/heap_traits_test.cc", |
| "test/incremental_marking_test.cc", |
| "test/marking_scheduling_oracle_test.cc", |
| "test/marking_verifier_test.cc", |
| "test/name_trait_test.cc", |
| "test/object_start_bitmap_test.cc", |
| "test/persistent_test.cc", |
| "test/thread_state_scheduling_test.cc", |
| "test/weakness_marking_test.cc", |
| "test/worklist_test.cc", |
| "test/write_barrier_perftest.cc", |
| ] |
| |
| if (enable_blink_heap_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 = [ |
| ":test_support", |
| "//base", |
| "//base/test:test_support", |
| "//mojo/core/embedder:embedder", |
| "//skia:test_fonts", |
| "//testing/gmock", |
| "//testing/gtest", |
| "//third_party/blink/renderer/platform:test_support", |
| "//third_party/blink/renderer/platform/wtf", |
| ] |
| |
| if (is_fuchsia) { |
| # Needed for ../testing/run_all_tests.cc. |
| deps += [ "//skia:test_fonts" ] |
| } |
| } |