dart-sdk/runtime/vm/vm_sources.gni
Martin Kustermann 700ba716cd [vm/concurrency] Avoid O(n) traversal of isolates to find pending deopt
To avoid a O(n) traversal of isolates in order to find pending deopts,
we'll move the pending deopt state to the Thread. It's really a property
of a thread: when the thread's stack gets unwound - via return or
exceptional flow - we remove pending deopts.

This CL also encapsulates the pending deopt logic into a [PendingDeopts]
class - thereby avoiding logic around manipulating this array being
spread around. It simplifies the already very big [Isolate] class.

TEST=Refactoring of existing code.

Issue https://github.com/dart-lang/sdk/issues/36097
Closes https://github.com/dart-lang/sdk/issues/45168

Change-Id: I5a9b18c577f21a0f2a88332b1bc26641ec39d2af
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188521
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Alexander Aprelev <aam@google.com>
2021-03-03 09:31:53 +00:00

468 lines
10 KiB
Text

# Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
# for details. All rights reserved. Use of this source code is governed by a
# BSD-style license that can be found in the LICENSE file.
# This file contains all sources (vm and tests) for the dart virtual machine.
# Unit test files need to have a "_test" suffix appended to the name.
vm_sources = [
"allocation.cc",
"allocation.h",
"base64.cc",
"base64.h",
"base_isolate.h",
"bit_vector.cc",
"bit_vector.h",
"bitfield.h",
"bitmap.cc",
"bitmap.h",
"boolfield.h",
"bootstrap.h",
"bootstrap_natives.cc",
"bootstrap_natives.h",
"bss_relocs.cc",
"bss_relocs.h",
"canonical_tables.cc",
"canonical_tables.h",
"class_finalizer.cc",
"class_finalizer.h",
"class_id.h",
"class_table.cc",
"class_table.h",
"closure_functions_cache.cc",
"closure_functions_cache.h",
"clustered_snapshot.cc",
"clustered_snapshot.h",
"code_comments.cc",
"code_comments.h",
"code_descriptors.cc",
"code_descriptors.h",
"code_entry_kind.h",
"code_observers.cc",
"code_observers.h",
"code_patcher.cc",
"code_patcher.h",
"code_patcher_arm.cc",
"code_patcher_arm64.cc",
"code_patcher_ia32.cc",
"code_patcher_x64.cc",
"compilation_trace.cc",
"compilation_trace.h",
"constants_arm.cc",
"constants_arm.h",
"constants_arm64.cc",
"constants_arm64.h",
"constants_base.h",
"constants_ia32.cc",
"constants_ia32.h",
"constants_x64.cc",
"constants_x64.h",
"cpu.h",
"cpu_arm.cc",
"cpu_arm64.cc",
"cpu_ia32.cc",
"cpu_x64.cc",
"cpuid.cc",
"cpuid.h",
"cpuinfo.h",
"cpuinfo_android.cc",
"cpuinfo_fuchsia.cc",
"cpuinfo_linux.cc",
"cpuinfo_macos.cc",
"cpuinfo_win.cc",
"dart.cc",
"dart.h",
"dart_api_impl.h",
"dart_api_message.cc",
"dart_api_message.h",
"dart_api_state.cc",
"dart_api_state.h",
"dart_entry.cc",
"dart_entry.h",
"datastream.cc",
"datastream.h",
"debugger.cc",
"debugger.h",
"debugger_arm.cc",
"debugger_arm64.cc",
"debugger_ia32.cc",
"debugger_x64.cc",
"deferred_objects.cc",
"deferred_objects.h",
"deopt_instructions.cc",
"deopt_instructions.h",
"dispatch_table.cc",
"dispatch_table.h",
"double_conversion.cc",
"double_conversion.h",
"double_internals.h",
"dwarf.cc",
"dwarf.h",
"elf.cc",
"elf.h",
"exceptions.cc",
"exceptions.h",
"experimental_features.cc",
"experimental_features.h",
"ffi_callback_trampolines.cc",
"ffi_callback_trampolines.h",
"field_table.cc",
"field_table.h",
"finalizable_data.h",
"fixed_cache.h",
"flag_list.h",
"flags.cc",
"flags.h",
"frame_layout.h",
"gdb_helpers.cc",
"globals.h",
"growable_array.h",
"handle_visitor.h",
"handles.cc",
"handles.h",
"handles_impl.h",
"hash_map.h",
"hash_table.h",
"image_snapshot.cc",
"image_snapshot.h",
"instructions.h",
"instructions_arm.cc",
"instructions_arm.h",
"instructions_arm64.cc",
"instructions_arm64.h",
"instructions_ia32.cc",
"instructions_ia32.h",
"instructions_x64.cc",
"instructions_x64.h",
"intrusive_dlist.h",
"isolate.cc",
"isolate.h",
"isolate_reload.cc",
"isolate_reload.h",
"json_stream.cc",
"json_stream.h",
"json_writer.cc",
"json_writer.h",
"kernel.cc",
"kernel.h",
"kernel_binary.cc",
"kernel_binary.h",
"kernel_isolate.cc",
"kernel_isolate.h",
"kernel_loader.cc",
"kernel_loader.h",
"lockers.cc",
"lockers.h",
"log.cc",
"log.h",
"longjump.cc",
"longjump.h",
"malloc_hooks.h",
"malloc_hooks_arm.cc",
"malloc_hooks_arm64.cc",
"malloc_hooks_ia32.cc",
"malloc_hooks_tcmalloc.cc",
"malloc_hooks_unsupported.cc",
"malloc_hooks_x64.cc",
"megamorphic_cache_table.cc",
"megamorphic_cache_table.h",
"memory_region.cc",
"memory_region.h",
"message.cc",
"message.h",
"message_handler.cc",
"message_handler.h",
"metrics.cc",
"metrics.h",
"native_arguments.h",
"native_entry.cc",
"native_entry.h",
"native_message_handler.cc",
"native_message_handler.h",
"native_symbol.h",
"native_symbol_android.cc",
"native_symbol_fuchsia.cc",
"native_symbol_linux.cc",
"native_symbol_macos.cc",
"native_symbol_win.cc",
"object.cc",
"object.h",
"object_graph.cc",
"object_graph.h",
"object_id_ring.cc",
"object_id_ring.h",
"object_reload.cc",
"object_service.cc",
"object_set.h",
"object_store.cc",
"object_store.h",
"os.h",
"os_android.cc",
"os_fuchsia.cc",
"os_linux.cc",
"os_macos.cc",
"os_thread.cc",
"os_thread.h",
"os_thread_android.cc",
"os_thread_android.h",
"os_thread_fuchsia.cc",
"os_thread_fuchsia.h",
"os_thread_linux.cc",
"os_thread_linux.h",
"os_thread_macos.cc",
"os_thread_macos.h",
"os_thread_win.cc",
"os_thread_win.h",
"os_win.cc",
"parser.cc",
"parser.h",
"pending_deopts.cc",
"pending_deopts.h",
"pointer_tagging.h",
"port.cc",
"port.h",
"port_set.h",
"proccpuinfo.cc",
"proccpuinfo.h",
"profiler.cc",
"profiler.h",
"profiler_service.cc",
"profiler_service.h",
"program_visitor.cc",
"program_visitor.h",
"random.cc",
"random.h",
"raw_object.cc",
"raw_object.h",
"raw_object_fields.cc",
"raw_object_fields.h",
"raw_object_snapshot.cc",
"regexp.cc",
"regexp.h",
"regexp_assembler.cc",
"regexp_assembler.h",
"regexp_assembler_bytecode.cc",
"regexp_assembler_bytecode.h",
"regexp_assembler_bytecode_inl.h",
"regexp_assembler_ir.cc",
"regexp_assembler_ir.h",
"regexp_ast.cc",
"regexp_ast.h",
"regexp_bytecodes.h",
"regexp_interpreter.cc",
"regexp_interpreter.h",
"regexp_parser.cc",
"regexp_parser.h",
"report.cc",
"report.h",
"resolver.cc",
"resolver.h",
"reusable_handles.h",
"reverse_pc_lookup_cache.cc",
"reverse_pc_lookup_cache.h",
"ring_buffer.h",
"runtime_entry.cc",
"runtime_entry.h",
"runtime_entry_arm.cc",
"runtime_entry_arm64.cc",
"runtime_entry_ia32.cc",
"runtime_entry_list.h",
"runtime_entry_x64.cc",
"scope_timer.h",
"scopes.cc",
"scopes.h",
"service.cc",
"service.h",
"service_event.cc",
"service_event.h",
"service_isolate.cc",
"service_isolate.h",
"signal_handler.h",
"signal_handler_android.cc",
"signal_handler_fuchsia.cc",
"signal_handler_linux.cc",
"signal_handler_macos.cc",
"signal_handler_win.cc",
"simulator.h",
"simulator_arm.cc",
"simulator_arm.h",
"simulator_arm64.cc",
"simulator_arm64.h",
"snapshot.cc",
"snapshot.h",
"snapshot_ids.h",
"source_report.cc",
"source_report.h",
"stack_frame.cc",
"stack_frame.h",
"stack_frame_arm.h",
"stack_frame_arm64.h",
"stack_frame_ia32.h",
"stack_frame_x64.h",
"stack_trace.cc",
"stack_trace.h",
"static_type_exactness_state.h",
"stub_code.cc",
"stub_code.h",
"stub_code_list.h",
"symbols.cc",
"symbols.h",
"tags.cc",
"tags.h",
"thread.cc",
"thread.h",
"thread_barrier.h",
"thread_interrupter.cc",
"thread_interrupter.h",
"thread_interrupter_android.cc",
"thread_interrupter_fuchsia.cc",
"thread_interrupter_linux.cc",
"thread_interrupter_macos.cc",
"thread_interrupter_win.cc",
"thread_pool.cc",
"thread_pool.h",
"thread_registry.cc",
"thread_registry.h",
"thread_stack_resource.cc",
"thread_stack_resource.h",
"thread_state.cc",
"thread_state.h",
"timeline.cc",
"timeline.h",
"timeline_analysis.cc",
"timeline_analysis.h",
"timeline_android.cc",
"timeline_fuchsia.cc",
"timeline_linux.cc",
"timeline_macos.cc",
"timer.cc",
"timer.h",
"token.cc",
"token.h",
"token_position.cc",
"token_position.h",
"type_testing_stubs.cc",
"type_testing_stubs.h",
"unibrow-inl.h",
"unibrow.cc",
"unibrow.h",
"unicode.cc",
"unicode_data.cc",
"uri.cc",
"uri.h",
"v8_snapshot_writer.cc",
"v8_snapshot_writer.h",
"virtual_memory.cc",
"virtual_memory.h",
"virtual_memory_compressed.cc",
"virtual_memory_compressed.h",
"virtual_memory_fuchsia.cc",
"virtual_memory_posix.cc",
"virtual_memory_win.cc",
"visitor.cc",
"visitor.h",
"zone.cc",
"zone.h",
"zone_text_buffer.cc",
"zone_text_buffer.h",
]
vm_sources_tests = [
"allocation_test.cc",
"assert_test.cc",
"atomic_test.cc",
"base64_test.cc",
"benchmark_test.cc",
"benchmark_test.h",
"bit_set_test.cc",
"bit_vector_test.cc",
"bitfield_test.cc",
"bitmap_test.cc",
"boolfield_test.cc",
"catch_entry_moves_test.cc",
"class_finalizer_test.cc",
"code_descriptors_test.cc",
"code_patcher_arm64_test.cc",
"code_patcher_arm_test.cc",
"code_patcher_ia32_test.cc",
"code_patcher_x64_test.cc",
"compiler_test.cc",
"cpu_test.cc",
"cpuinfo_test.cc",
"custom_isolate_test.cc",
"dart_api_impl_test.cc",
"datastream_test.cc",
"debugger_api_impl_test.cc",
"exceptions_test.cc",
"fixed_cache_test.cc",
"flags_test.cc",
"growable_array_test.cc",
"guard_field_test.cc",
"handles_test.cc",
"hash_map_test.cc",
"hash_table_test.cc",
"instructions_arm64_test.cc",
"instructions_arm_test.cc",
"instructions_ia32_test.cc",
"instructions_x64_test.cc",
"intrusive_dlist_test.cc",
"isolate_reload_test.cc",
"isolate_test.cc",
"json_test.cc",
"log_test.cc",
"longjump_test.cc",
"malloc_hooks_test.cc",
"memory_region_test.cc",
"message_handler_test.cc",
"message_test.cc",
"metrics_test.cc",
"mixin_test.cc",
"native_entry_test.cc",
"native_entry_test.h",
"object_arm64_test.cc",
"object_arm_test.cc",
"object_graph_test.cc",
"object_ia32_test.cc",
"object_id_ring_test.cc",
"object_store_test.cc",
"object_test.cc",
"object_x64_test.cc",
"os_test.cc",
"port_test.cc",
"profiler_test.cc",
"regexp_test.cc",
"ring_buffer_test.cc",
"scopes_test.cc",
"service_test.cc",
"snapshot_test.cc",
"source_report_test.cc",
"stack_frame_test.cc",
"stub_code_test.cc",
"stub_code_arm64_test.cc",
"stub_code_arm_test.cc",
"stub_code_ia32_test.cc",
"stub_code_x64_test.cc",
"thread_barrier_test.cc",
"thread_pool_test.cc",
"thread_test.cc",
"timeline_test.cc",
"type_testing_stubs_test.cc",
"unicode_test.cc",
"unit_test.cc",
"unit_test.h",
"uri_test.cc",
"utils_test.cc",
"virtual_memory_test.cc",
"zone_test.cc",
]
constants_sources = [
"constants_arm.cc",
"constants_arm.h",
"constants_arm64.cc",
"constants_arm64.h",
"constants_base.h",
"constants_ia32.cc",
"constants_ia32.h",
"constants_x64.cc",
"constants_x64.h",
]