[vm] Move heap-related code to its own subdirectory (cf. compiler).

Remove some dead includes.

Change-Id: I31f3e739e5ee46dcbba5d6a2f091491b46402943
Reviewed-on: https://dart-review.googlesource.com/60146
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
diff --git a/runtime/bin/BUILD.gn b/runtime/bin/BUILD.gn
index 28e8d69..15c9fb7 100644
--- a/runtime/bin/BUILD.gn
+++ b/runtime/bin/BUILD.gn
@@ -8,6 +8,7 @@
 import("../../sdk/lib/cli/cli_sources.gni")
 import("../../utils/generate_entry_points_json.gni")
 import("../runtime_args.gni")
+import("../vm/heap/heap_sources.gni")
 import("../vm/compiler/compiler_sources.gni")
 import("../vm/vm_sources.gni")
 import("builtin_impl_sources.gni")
@@ -1147,6 +1148,7 @@
   # the tests here.
   vm_tests = rebase_path(vm_sources_tests, ".", "../vm")
   compiler_tests = rebase_path(compiler_sources_tests, ".", "../vm/compiler")
+  heap_tests = rebase_path(heap_sources_tests, ".", "../vm/heap")
 
   sources = [
               "builtin_nolib.cc",
@@ -1155,7 +1157,7 @@
               "run_vm_tests.cc",
               "snapshot_utils.cc",
               "snapshot_utils.h",
-            ] + builtin_impl_tests + vm_tests + compiler_tests
+            ] + builtin_impl_tests + vm_tests + compiler_tests + heap_tests
 
   if (!is_win) {
     ldflags = [ "-rdynamic" ]
diff --git a/runtime/lib/object.cc b/runtime/lib/object.cc
index c3a6a6c..a9a0550 100644
--- a/runtime/lib/object.cc
+++ b/runtime/lib/object.cc
@@ -7,7 +7,7 @@
 #include "lib/invocation_mirror.h"
 #include "vm/code_patcher.h"
 #include "vm/exceptions.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/native_entry.h"
 #include "vm/object.h"
 #include "vm/stack_frame.h"
diff --git a/runtime/vm/BUILD.gn b/runtime/vm/BUILD.gn
index a3f1640..33bd09d 100644
--- a/runtime/vm/BUILD.gn
+++ b/runtime/vm/BUILD.gn
@@ -33,6 +33,7 @@
 import("../configs.gni")
 import("../runtime_args.gni")
 import("compiler/compiler_sources.gni")
+import("heap/heap_sources.gni")
 import("vm_sources.gni")
 
 config("libdart_vm_config") {
@@ -75,7 +76,8 @@
                                   "*_test.cc",
                                   "*_test.h",
                                 ])
-  sources = vm_sources + rebase_path(compiler_sources, ".", "./compiler/")
+  sources = vm_sources + rebase_path(compiler_sources, ".", "./compiler/") +
+            rebase_path(heap_sources, ".", "./heap/")
   include_dirs = [ ".." ]
 }
 
diff --git a/runtime/vm/ast_printer_test.cc b/runtime/vm/ast_printer_test.cc
index 7f73a8d..4385f84 100644
--- a/runtime/vm/ast_printer_test.cc
+++ b/runtime/vm/ast_printer_test.cc
@@ -4,10 +4,8 @@
 
 #include "vm/ast_printer.h"
 #include "platform/assert.h"
-#include "vm/heap.h"
 #include "vm/isolate.h"
 #include "vm/object.h"
-#include "vm/object_store.h"
 #include "vm/unit_test.h"
 
 namespace dart {
diff --git a/runtime/vm/ast_test.cc b/runtime/vm/ast_test.cc
index 302c1d9..b1a062e 100644
--- a/runtime/vm/ast_test.cc
+++ b/runtime/vm/ast_test.cc
@@ -4,10 +4,8 @@
 
 #include "vm/ast.h"
 #include "platform/assert.h"
-#include "vm/heap.h"
 #include "vm/isolate.h"
 #include "vm/object.h"
-#include "vm/object_store.h"
 #include "vm/unit_test.h"
 
 namespace dart {
diff --git a/runtime/vm/benchmark_test.h b/runtime/vm/benchmark_test.h
index 58f4eee..eb08041 100644
--- a/runtime/vm/benchmark_test.h
+++ b/runtime/vm/benchmark_test.h
@@ -9,7 +9,6 @@
 
 #include "vm/dart.h"
 #include "vm/globals.h"
-#include "vm/heap.h"
 #include "vm/isolate.h"
 #include "vm/malloc_hooks.h"
 #include "vm/object.h"
diff --git a/runtime/vm/class_finalizer.cc b/runtime/vm/class_finalizer.cc
index 5ae8029..5bdfcb8 100644
--- a/runtime/vm/class_finalizer.cc
+++ b/runtime/vm/class_finalizer.cc
@@ -7,7 +7,7 @@
 #include "vm/compiler/jit/compiler.h"
 #include "vm/flags.h"
 #include "vm/hash_table.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/isolate.h"
 #include "vm/kernel_loader.h"
 #include "vm/log.h"
diff --git a/runtime/vm/class_table.cc b/runtime/vm/class_table.cc
index c07f14a..f0434a3 100644
--- a/runtime/vm/class_table.cc
+++ b/runtime/vm/class_table.cc
@@ -6,9 +6,8 @@
 
 #include "platform/atomic.h"
 #include "vm/flags.h"
-#include "vm/freelist.h"
 #include "vm/growable_array.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/object.h"
 #include "vm/raw_object.h"
 #include "vm/visitor.h"
diff --git a/runtime/vm/clustered_snapshot.cc b/runtime/vm/clustered_snapshot.cc
index 378b2e6..de660dd 100644
--- a/runtime/vm/clustered_snapshot.cc
+++ b/runtime/vm/clustered_snapshot.cc
@@ -8,7 +8,7 @@
 #include "vm/bootstrap.h"
 #include "vm/compiler/backend/code_statistics.h"
 #include "vm/dart.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/image_snapshot.h"
 #include "vm/native_entry.h"
 #include "vm/object.h"
diff --git a/runtime/vm/clustered_snapshot.h b/runtime/vm/clustered_snapshot.h
index 1e2da8c..7c64239 100644
--- a/runtime/vm/clustered_snapshot.h
+++ b/runtime/vm/clustered_snapshot.h
@@ -12,7 +12,7 @@
 #include "vm/globals.h"
 #include "vm/growable_array.h"
 #include "vm/hash_map.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/object.h"
 #include "vm/snapshot.h"
 #include "vm/type_testing_stubs.h"
diff --git a/runtime/vm/compiler/assembler/assembler.cc b/runtime/vm/compiler/assembler/assembler.cc
index c2dc4e7..7b7a2ff 100644
--- a/runtime/vm/compiler/assembler/assembler.cc
+++ b/runtime/vm/compiler/assembler/assembler.cc
@@ -8,7 +8,7 @@
 
 #include "platform/utils.h"
 #include "vm/cpu.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/memory_region.h"
 #include "vm/os.h"
 #include "vm/zone.h"
diff --git a/runtime/vm/compiler/assembler/assembler_ia32.cc b/runtime/vm/compiler/assembler/assembler_ia32.cc
index ae69a35..692d9c8 100644
--- a/runtime/vm/compiler/assembler/assembler_ia32.cc
+++ b/runtime/vm/compiler/assembler/assembler_ia32.cc
@@ -7,7 +7,7 @@
 
 #include "vm/compiler/assembler/assembler.h"
 #include "vm/cpu.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/instructions.h"
 #include "vm/memory_region.h"
 #include "vm/runtime_entry.h"
diff --git a/runtime/vm/compiler/assembler/assembler_x64.cc b/runtime/vm/compiler/assembler/assembler_x64.cc
index 5a88fa6..76f051f 100644
--- a/runtime/vm/compiler/assembler/assembler_x64.cc
+++ b/runtime/vm/compiler/assembler/assembler_x64.cc
@@ -8,7 +8,7 @@
 #include "vm/compiler/assembler/assembler.h"
 #include "vm/compiler/backend/locations.h"
 #include "vm/cpu.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/instructions.h"
 #include "vm/memory_region.h"
 #include "vm/runtime_entry.h"
diff --git a/runtime/vm/compiler/assembler/disassembler_x86.cc b/runtime/vm/compiler/assembler/disassembler_x86.cc
index a25530c..6e7089e 100644
--- a/runtime/vm/compiler/assembler/disassembler_x86.cc
+++ b/runtime/vm/compiler/assembler/disassembler_x86.cc
@@ -11,7 +11,7 @@
 
 #include "platform/utils.h"
 #include "vm/allocation.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/instructions.h"
 #include "vm/os.h"
 #include "vm/stack_frame.h"
diff --git a/runtime/vm/compiler/cha.cc b/runtime/vm/compiler/cha.cc
index 32a5146..5a2fcdd 100644
--- a/runtime/vm/compiler/cha.cc
+++ b/runtime/vm/compiler/cha.cc
@@ -7,7 +7,6 @@
 #include "vm/compiler/cha.h"
 #include "vm/class_table.h"
 #include "vm/flags.h"
-#include "vm/freelist.h"
 #include "vm/object.h"
 #include "vm/raw_object.h"
 #include "vm/visitor.h"
diff --git a/runtime/vm/compiler/frontend/flow_graph_builder.cc b/runtime/vm/compiler/frontend/flow_graph_builder.cc
index d950842..6ab263e 100644
--- a/runtime/vm/compiler/frontend/flow_graph_builder.cc
+++ b/runtime/vm/compiler/frontend/flow_graph_builder.cc
@@ -19,7 +19,7 @@
 #include "vm/compiler/jit/compiler.h"
 #include "vm/exceptions.h"
 #include "vm/flags.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/isolate.h"
 #include "vm/object.h"
 #include "vm/object_store.h"
diff --git a/runtime/vm/compiler_test.cc b/runtime/vm/compiler_test.cc
index 4503d8b..8eb3586 100644
--- a/runtime/vm/compiler_test.cc
+++ b/runtime/vm/compiler_test.cc
@@ -7,9 +7,9 @@
 #include "vm/class_finalizer.h"
 #include "vm/code_patcher.h"
 #include "vm/dart_api_impl.h"
+#include "vm/heap/safepoint.h"
 #include "vm/kernel_isolate.h"
 #include "vm/object.h"
-#include "vm/safepoint.h"
 #include "vm/symbols.h"
 #include "vm/thread_pool.h"
 #include "vm/unit_test.h"
diff --git a/runtime/vm/cpu_arm.cc b/runtime/vm/cpu_arm.cc
index 052f5ed..240bd2d 100644
--- a/runtime/vm/cpu_arm.cc
+++ b/runtime/vm/cpu_arm.cc
@@ -10,7 +10,7 @@
 
 #include "vm/compiler/assembler/assembler.h"
 #include "vm/cpuinfo.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/isolate.h"
 #include "vm/object.h"
 #include "vm/simulator.h"
diff --git a/runtime/vm/cpu_ia32.cc b/runtime/vm/cpu_ia32.cc
index 475f01c..b6d21f2 100644
--- a/runtime/vm/cpu_ia32.cc
+++ b/runtime/vm/cpu_ia32.cc
@@ -11,7 +11,7 @@
 #include "vm/compiler/assembler/assembler.h"
 #include "vm/constants_ia32.h"
 #include "vm/cpuinfo.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/isolate.h"
 #include "vm/object.h"
 
diff --git a/runtime/vm/cpu_x64.cc b/runtime/vm/cpu_x64.cc
index 55b9754..33c04b0 100644
--- a/runtime/vm/cpu_x64.cc
+++ b/runtime/vm/cpu_x64.cc
@@ -11,7 +11,7 @@
 #include "vm/compiler/assembler/assembler.h"
 #include "vm/constants_x64.h"
 #include "vm/cpuinfo.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/isolate.h"
 #include "vm/object.h"
 
diff --git a/runtime/vm/dart.cc b/runtime/vm/dart.cc
index 06adc84..afedf3b 100644
--- a/runtime/vm/dart.cc
+++ b/runtime/vm/dart.cc
@@ -4,7 +4,6 @@
 
 #include "vm/dart.h"
 
-#include "vm/become.h"
 #include "vm/clustered_snapshot.h"
 #include "vm/code_observers.h"
 #include "vm/cpu.h"
@@ -12,9 +11,11 @@
 #include "vm/dart_entry.h"
 #include "vm/debugger.h"
 #include "vm/flags.h"
-#include "vm/freelist.h"
 #include "vm/handles.h"
-#include "vm/heap.h"
+#include "vm/heap/become.h"
+#include "vm/heap/freelist.h"
+#include "vm/heap/heap.h"
+#include "vm/heap/store_buffer.h"
 #include "vm/isolate.h"
 #include "vm/kernel_isolate.h"
 #include "vm/malloc_hooks.h"
@@ -28,7 +29,6 @@
 #include "vm/service_isolate.h"
 #include "vm/simulator.h"
 #include "vm/snapshot.h"
-#include "vm/store_buffer.h"
 #include "vm/stub_code.h"
 #include "vm/symbols.h"
 #include "vm/thread_interrupter.h"
diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
index 3109abd..ebee057 100644
--- a/runtime/vm/dart_api_impl.cc
+++ b/runtime/vm/dart_api_impl.cc
@@ -24,6 +24,7 @@
 #include "vm/exceptions.h"
 #include "vm/flags.h"
 #include "vm/growable_array.h"
+#include "vm/heap/verifier.h"
 #include "vm/image_snapshot.h"
 #include "vm/isolate_reload.h"
 #include "vm/kernel_isolate.h"
@@ -50,7 +51,6 @@
 #include "vm/timer.h"
 #include "vm/unicode.h"
 #include "vm/uri.h"
-#include "vm/verifier.h"
 #include "vm/version.h"
 
 namespace dart {
diff --git a/runtime/vm/dart_api_impl.h b/runtime/vm/dart_api_impl.h
index 375fc6d..76747d5 100644
--- a/runtime/vm/dart_api_impl.h
+++ b/runtime/vm/dart_api_impl.h
@@ -6,9 +6,9 @@
 #define RUNTIME_VM_DART_API_IMPL_H_
 
 #include "vm/allocation.h"
+#include "vm/heap/safepoint.h"
 #include "vm/native_arguments.h"
 #include "vm/object.h"
-#include "vm/safepoint.h"
 #include "vm/thread_registry.h"
 #include "vm/timeline.h"
 
diff --git a/runtime/vm/dart_api_impl_test.cc b/runtime/vm/dart_api_impl_test.cc
index f0ada37..b88dd39 100644
--- a/runtime/vm/dart_api_impl_test.cc
+++ b/runtime/vm/dart_api_impl_test.cc
@@ -14,10 +14,10 @@
 #include "vm/compiler/jit/compiler.h"
 #include "vm/dart_api_state.h"
 #include "vm/debugger_api_impl_test.h"
+#include "vm/heap/verifier.h"
 #include "vm/lockers.h"
 #include "vm/timeline.h"
 #include "vm/unit_test.h"
-#include "vm/verifier.h"
 
 namespace dart {
 
diff --git a/runtime/vm/dart_api_state.cc b/runtime/vm/dart_api_state.cc
index ba2359b..5a8a024 100644
--- a/runtime/vm/dart_api_state.cc
+++ b/runtime/vm/dart_api_state.cc
@@ -6,7 +6,7 @@
 
 #include "platform/assert.h"
 #include "platform/utils.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/isolate.h"
 #include "vm/lockers.h"
 #include "vm/thread.h"
diff --git a/runtime/vm/dart_api_state.h b/runtime/vm/dart_api_state.h
index 84953b9..c27ce69 100644
--- a/runtime/vm/dart_api_state.h
+++ b/runtime/vm/dart_api_state.h
@@ -13,13 +13,13 @@
 #include "vm/flags.h"
 #include "vm/growable_array.h"
 #include "vm/handles.h"
+#include "vm/heap/weak_table.h"
 #include "vm/object.h"
 #include "vm/os.h"
 #include "vm/os_thread.h"
 #include "vm/raw_object.h"
 #include "vm/thread_pool.h"
 #include "vm/visitor.h"
-#include "vm/weak_table.h"
 
 #include "vm/handles_impl.h"
 
diff --git a/runtime/vm/dart_entry.cc b/runtime/vm/dart_entry.cc
index 82afa1e..1ab87c0 100644
--- a/runtime/vm/dart_entry.cc
+++ b/runtime/vm/dart_entry.cc
@@ -8,11 +8,11 @@
 #include "vm/class_finalizer.h"
 #include "vm/compiler/jit/compiler.h"
 #include "vm/debugger.h"
+#include "vm/heap/safepoint.h"
 #include "vm/interpreter.h"
 #include "vm/object_store.h"
 #include "vm/resolver.h"
 #include "vm/runtime_entry.h"
-#include "vm/safepoint.h"
 #include "vm/simulator.h"
 #include "vm/stub_code.h"
 #include "vm/symbols.h"
diff --git a/runtime/vm/find_code_object_test.cc b/runtime/vm/find_code_object_test.cc
index 0be5a94..1fe3662 100644
--- a/runtime/vm/find_code_object_test.cc
+++ b/runtime/vm/find_code_object_test.cc
@@ -5,8 +5,8 @@
 #include "platform/assert.h"
 #include "vm/class_finalizer.h"
 #include "vm/compiler/jit/compiler.h"
+#include "vm/heap/pages.h"
 #include "vm/object.h"
-#include "vm/pages.h"
 #include "vm/stack_frame.h"
 #include "vm/symbols.h"
 #include "vm/unit_test.h"
diff --git a/runtime/vm/flags_test.cc b/runtime/vm/flags_test.cc
index 476bfb8..c9950db 100644
--- a/runtime/vm/flags_test.cc
+++ b/runtime/vm/flags_test.cc
@@ -4,7 +4,7 @@
 
 #include "vm/flags.h"
 #include "platform/assert.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/unit_test.h"
 
 namespace dart {
diff --git a/runtime/vm/handles_impl.h b/runtime/vm/handles_impl.h
index 9e2d9f9..901a837 100644
--- a/runtime/vm/handles_impl.h
+++ b/runtime/vm/handles_impl.h
@@ -5,7 +5,7 @@
 #ifndef RUNTIME_VM_HANDLES_IMPL_H_
 #define RUNTIME_VM_HANDLES_IMPL_H_
 
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/thread.h"
 #include "vm/visitor.h"
 
diff --git a/runtime/vm/handles_test.cc b/runtime/vm/handles_test.cc
index 0c63482..040225e 100644
--- a/runtime/vm/handles_test.cc
+++ b/runtime/vm/handles_test.cc
@@ -6,7 +6,7 @@
 #include "platform/assert.h"
 #include "vm/dart_api_state.h"
 #include "vm/flags.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/object.h"
 #include "vm/unit_test.h"
 #include "vm/zone.h"
diff --git a/runtime/vm/become.cc b/runtime/vm/heap/become.cc
similarity index 99%
rename from runtime/vm/become.cc
rename to runtime/vm/heap/become.cc
index b6512c6..7c611aa 100644
--- a/runtime/vm/become.cc
+++ b/runtime/vm/heap/become.cc
@@ -2,16 +2,16 @@
 // 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.
 
-#include "vm/become.h"
+#include "vm/heap/become.h"
 
 #include "platform/assert.h"
 #include "platform/utils.h"
 
 #include "vm/dart_api_state.h"
+#include "vm/heap/safepoint.h"
 #include "vm/isolate_reload.h"
 #include "vm/object.h"
 #include "vm/raw_object.h"
-#include "vm/safepoint.h"
 #include "vm/timeline.h"
 #include "vm/visitor.h"
 
diff --git a/runtime/vm/become.h b/runtime/vm/heap/become.h
similarity index 96%
rename from runtime/vm/become.h
rename to runtime/vm/heap/become.h
index ca25361..9d3263a2 100644
--- a/runtime/vm/become.h
+++ b/runtime/vm/heap/become.h
@@ -2,8 +2,8 @@
 // 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.
 
-#ifndef RUNTIME_VM_BECOME_H_
-#define RUNTIME_VM_BECOME_H_
+#ifndef RUNTIME_VM_HEAP_BECOME_H_
+#define RUNTIME_VM_HEAP_BECOME_H_
 
 #include "vm/allocation.h"
 #include "vm/raw_object.h"
@@ -96,4 +96,4 @@
 
 }  // namespace dart
 
-#endif  // RUNTIME_VM_BECOME_H_
+#endif  // RUNTIME_VM_HEAP_BECOME_H_
diff --git a/runtime/vm/gc_compactor.cc b/runtime/vm/heap/compactor.cc
similarity index 98%
rename from runtime/vm/gc_compactor.cc
rename to runtime/vm/heap/compactor.cc
index b10d0b6..12815bf 100644
--- a/runtime/vm/gc_compactor.cc
+++ b/runtime/vm/heap/compactor.cc
@@ -2,12 +2,12 @@
 // 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.
 
-#include "vm/gc_compactor.h"
+#include "vm/heap/compactor.h"
 
-#include "vm/become.h"
 #include "vm/globals.h"
-#include "vm/heap.h"
-#include "vm/pages.h"
+#include "vm/heap/become.h"
+#include "vm/heap/heap.h"
+#include "vm/heap/pages.h"
 #include "vm/thread_barrier.h"
 #include "vm/timeline.h"
 
diff --git a/runtime/vm/gc_compactor.h b/runtime/vm/heap/compactor.h
similarity index 91%
rename from runtime/vm/gc_compactor.h
rename to runtime/vm/heap/compactor.h
index 7ae687f..903bf0e 100644
--- a/runtime/vm/gc_compactor.h
+++ b/runtime/vm/heap/compactor.h
@@ -2,8 +2,8 @@
 // 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.
 
-#ifndef RUNTIME_VM_GC_COMPACTOR_H_
-#define RUNTIME_VM_GC_COMPACTOR_H_
+#ifndef RUNTIME_VM_HEAP_COMPACTOR_H_
+#define RUNTIME_VM_HEAP_COMPACTOR_H_
 
 #include "vm/allocation.h"
 #include "vm/dart_api_state.h"
@@ -52,4 +52,4 @@
 
 }  // namespace dart
 
-#endif  // RUNTIME_VM_GC_COMPACTOR_H_
+#endif  // RUNTIME_VM_HEAP_COMPACTOR_H_
diff --git a/runtime/vm/freelist.cc b/runtime/vm/heap/freelist.cc
similarity index 99%
rename from runtime/vm/freelist.cc
rename to runtime/vm/heap/freelist.cc
index c90fead..e4f690f 100644
--- a/runtime/vm/freelist.cc
+++ b/runtime/vm/heap/freelist.cc
@@ -2,7 +2,7 @@
 // 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.
 
-#include "vm/freelist.h"
+#include "vm/heap/freelist.h"
 
 #include "vm/bit_set.h"
 #include "vm/hash_map.h"
diff --git a/runtime/vm/freelist.h b/runtime/vm/heap/freelist.h
similarity index 96%
rename from runtime/vm/freelist.h
rename to runtime/vm/heap/freelist.h
index e5fa43d..10e0beb 100644
--- a/runtime/vm/freelist.h
+++ b/runtime/vm/heap/freelist.h
@@ -2,8 +2,8 @@
 // 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.
 
-#ifndef RUNTIME_VM_FREELIST_H_
-#define RUNTIME_VM_FREELIST_H_
+#ifndef RUNTIME_VM_HEAP_FREELIST_H_
+#define RUNTIME_VM_HEAP_FREELIST_H_
 
 #include "platform/assert.h"
 #include "vm/allocation.h"
@@ -133,4 +133,4 @@
 
 }  // namespace dart
 
-#endif  // RUNTIME_VM_FREELIST_H_
+#endif  // RUNTIME_VM_HEAP_FREELIST_H_
diff --git a/runtime/vm/freelist_test.cc b/runtime/vm/heap/freelist_test.cc
similarity index 99%
rename from runtime/vm/freelist_test.cc
rename to runtime/vm/heap/freelist_test.cc
index 63137f1..d3a0ae9 100644
--- a/runtime/vm/freelist_test.cc
+++ b/runtime/vm/heap/freelist_test.cc
@@ -2,7 +2,7 @@
 // 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.
 
-#include "vm/freelist.h"
+#include "vm/heap/freelist.h"
 #include "platform/assert.h"
 #include "vm/unit_test.h"
 
diff --git a/runtime/vm/heap.cc b/runtime/vm/heap/heap.cc
similarity index 99%
rename from runtime/vm/heap.cc
rename to runtime/vm/heap/heap.cc
index cd47729..376f9b7 100644
--- a/runtime/vm/heap.cc
+++ b/runtime/vm/heap/heap.cc
@@ -2,20 +2,22 @@
 // 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.
 
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 
 #include "platform/assert.h"
 #include "platform/utils.h"
 #include "vm/flags.h"
+#include "vm/heap/pages.h"
+#include "vm/heap/safepoint.h"
+#include "vm/heap/scavenger.h"
+#include "vm/heap/verifier.h"
+#include "vm/heap/weak_table.h"
 #include "vm/isolate.h"
 #include "vm/lockers.h"
 #include "vm/object.h"
 #include "vm/object_set.h"
 #include "vm/os.h"
-#include "vm/pages.h"
 #include "vm/raw_object.h"
-#include "vm/safepoint.h"
-#include "vm/scavenger.h"
 #include "vm/service.h"
 #include "vm/service_event.h"
 #include "vm/service_isolate.h"
@@ -23,9 +25,7 @@
 #include "vm/tags.h"
 #include "vm/thread_pool.h"
 #include "vm/timeline.h"
-#include "vm/verifier.h"
 #include "vm/virtual_memory.h"
-#include "vm/weak_table.h"
 
 namespace dart {
 
diff --git a/runtime/vm/heap.h b/runtime/vm/heap/heap.h
similarity index 97%
rename from runtime/vm/heap.h
rename to runtime/vm/heap/heap.h
index 2edf4cf..d4c2cf1 100644
--- a/runtime/vm/heap.h
+++ b/runtime/vm/heap/heap.h
@@ -2,17 +2,17 @@
 // 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.
 
-#ifndef RUNTIME_VM_HEAP_H_
-#define RUNTIME_VM_HEAP_H_
+#ifndef RUNTIME_VM_HEAP_HEAP_H_
+#define RUNTIME_VM_HEAP_HEAP_H_
 
 #include "platform/assert.h"
 #include "vm/allocation.h"
 #include "vm/flags.h"
 #include "vm/globals.h"
-#include "vm/pages.h"
-#include "vm/scavenger.h"
-#include "vm/spaces.h"
-#include "vm/weak_table.h"
+#include "vm/heap/pages.h"
+#include "vm/heap/scavenger.h"
+#include "vm/heap/spaces.h"
+#include "vm/heap/weak_table.h"
 
 namespace dart {
 
@@ -317,8 +317,7 @@
   bool VerifyGC(MarkExpectation mark_expectation = kForbidMarked) const;
 
   // Helper functions for garbage collection.
-  void CollectNewSpaceGarbage(Thread* thread,
-                              GCReason reason);
+  void CollectNewSpaceGarbage(Thread* thread, GCReason reason);
   void CollectOldSpaceGarbage(Thread* thread, GCType type, GCReason reason);
   void EvacuateNewSpace(Thread* thread, GCReason reason);
 
@@ -418,4 +417,4 @@
 
 }  // namespace dart
 
-#endif  // RUNTIME_VM_HEAP_H_
+#endif  // RUNTIME_VM_HEAP_HEAP_H_
diff --git a/runtime/vm/heap/heap_sources.gni b/runtime/vm/heap/heap_sources.gni
new file mode 100644
index 0000000..7fa7986
--- /dev/null
+++ b/runtime/vm/heap/heap_sources.gni
@@ -0,0 +1,42 @@
+# Copyright (c) 2018, 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 compiler pipeline.
+# Unit test files need to have a "_test" suffix appended to the name.
+heap_sources = [
+  "become.cc",
+  "become.h",
+  "compactor.cc",
+  "compactor.h",
+  "freelist.cc",
+  "freelist.h",
+  "heap.cc",
+  "heap.h",
+  "marker.cc",
+  "marker.h",
+  "pages.cc",
+  "pages.h",
+  "safepoint.cc",
+  "safepoint.h",
+  "scavenger.cc",
+  "scavenger.h",
+  "spaces.h",
+  "store_buffer.cc",
+  "store_buffer.h",
+  "sweeper.cc",
+  "sweeper.h",
+  "verifier.cc",
+  "verifier.h",
+  "weak_code.cc",
+  "weak_code.h",
+  "weak_table.cc",
+  "weak_table.h",
+]
+
+heap_sources_tests = [
+  "freelist_test.cc",
+  "heap_test.cc",
+  "pages_test.cc",
+  "scavenger_test.cc",
+]
diff --git a/runtime/vm/heap_test.cc b/runtime/vm/heap/heap_test.cc
similarity index 99%
rename from runtime/vm/heap_test.cc
rename to runtime/vm/heap/heap_test.cc
index 23def28f..1281e13 100644
--- a/runtime/vm/heap_test.cc
+++ b/runtime/vm/heap/heap_test.cc
@@ -5,10 +5,10 @@
 #include "platform/globals.h"
 
 #include "platform/assert.h"
-#include "vm/become.h"
 #include "vm/dart_api_impl.h"
 #include "vm/globals.h"
-#include "vm/heap.h"
+#include "vm/heap/become.h"
+#include "vm/heap/heap.h"
 #include "vm/unit_test.h"
 
 namespace dart {
diff --git a/runtime/vm/gc_marker.cc b/runtime/vm/heap/marker.cc
similarity index 99%
rename from runtime/vm/gc_marker.cc
rename to runtime/vm/heap/marker.cc
index 21aa17d..3d0004d 100644
--- a/runtime/vm/gc_marker.cc
+++ b/runtime/vm/heap/marker.cc
@@ -2,17 +2,17 @@
 // 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.
 
-#include "vm/gc_marker.h"
+#include "vm/heap/marker.h"
 
 #include "vm/allocation.h"
 #include "vm/dart_api_state.h"
+#include "vm/heap/pages.h"
+#include "vm/heap/store_buffer.h"
 #include "vm/isolate.h"
 #include "vm/log.h"
 #include "vm/object_id_ring.h"
-#include "vm/pages.h"
 #include "vm/raw_object.h"
 #include "vm/stack_frame.h"
-#include "vm/store_buffer.h"
 #include "vm/thread_barrier.h"
 #include "vm/thread_pool.h"
 #include "vm/thread_registry.h"
diff --git a/runtime/vm/gc_marker.h b/runtime/vm/heap/marker.h
similarity index 88%
rename from runtime/vm/gc_marker.h
rename to runtime/vm/heap/marker.h
index 7bfa182..6926468 100644
--- a/runtime/vm/gc_marker.h
+++ b/runtime/vm/heap/marker.h
@@ -2,8 +2,8 @@
 // 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.
 
-#ifndef RUNTIME_VM_GC_MARKER_H_
-#define RUNTIME_VM_GC_MARKER_H_
+#ifndef RUNTIME_VM_HEAP_MARKER_H_
+#define RUNTIME_VM_HEAP_MARKER_H_
 
 #include "vm/allocation.h"
 #include "vm/os_thread.h"  // Mutex.
@@ -25,9 +25,7 @@
   explicit GCMarker(Heap* heap) : heap_(heap), marked_bytes_(0) {}
   ~GCMarker() {}
 
-  void MarkObjects(Isolate* isolate,
-                   PageSpace* page_space,
-                   bool collect_code);
+  void MarkObjects(Isolate* isolate, PageSpace* page_space, bool collect_code);
 
   intptr_t marked_words() { return marked_bytes_ >> kWordSizeLog2; }
 
@@ -60,4 +58,4 @@
 
 }  // namespace dart
 
-#endif  // RUNTIME_VM_GC_MARKER_H_
+#endif  // RUNTIME_VM_HEAP_MARKER_H_
diff --git a/runtime/vm/pages.cc b/runtime/vm/heap/pages.cc
similarity index 99%
rename from runtime/vm/pages.cc
rename to runtime/vm/heap/pages.cc
index 288f8ff..344932e 100644
--- a/runtime/vm/pages.cc
+++ b/runtime/vm/heap/pages.cc
@@ -2,21 +2,21 @@
 // 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.
 
-#include "vm/pages.h"
+#include "vm/heap/pages.h"
 
 #include "platform/address_sanitizer.h"
 #include "platform/assert.h"
-#include "vm/become.h"
 #include "vm/compiler_stats.h"
-#include "vm/gc_compactor.h"
-#include "vm/gc_marker.h"
-#include "vm/gc_sweeper.h"
+#include "vm/heap/become.h"
+#include "vm/heap/compactor.h"
+#include "vm/heap/marker.h"
+#include "vm/heap/safepoint.h"
+#include "vm/heap/sweeper.h"
 #include "vm/lockers.h"
 #include "vm/log.h"
 #include "vm/object.h"
 #include "vm/object_set.h"
 #include "vm/os_thread.h"
-#include "vm/safepoint.h"
 #include "vm/virtual_memory.h"
 
 namespace dart {
diff --git a/runtime/vm/pages.h b/runtime/vm/heap/pages.h
similarity index 98%
rename from runtime/vm/pages.h
rename to runtime/vm/heap/pages.h
index b0dfc7a..9901fea 100644
--- a/runtime/vm/pages.h
+++ b/runtime/vm/heap/pages.h
@@ -2,14 +2,14 @@
 // 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.
 
-#ifndef RUNTIME_VM_PAGES_H_
-#define RUNTIME_VM_PAGES_H_
+#ifndef RUNTIME_VM_HEAP_PAGES_H_
+#define RUNTIME_VM_HEAP_PAGES_H_
 
-#include "vm/freelist.h"
 #include "vm/globals.h"
+#include "vm/heap/freelist.h"
+#include "vm/heap/spaces.h"
 #include "vm/lockers.h"
 #include "vm/ring_buffer.h"
-#include "vm/spaces.h"
 #include "vm/thread.h"
 #include "vm/virtual_memory.h"
 
@@ -460,4 +460,4 @@
 
 }  // namespace dart
 
-#endif  // RUNTIME_VM_PAGES_H_
+#endif  // RUNTIME_VM_HEAP_PAGES_H_
diff --git a/runtime/vm/pages_test.cc b/runtime/vm/heap/pages_test.cc
similarity index 97%
rename from runtime/vm/pages_test.cc
rename to runtime/vm/heap/pages_test.cc
index 85a0d30..1db6113 100644
--- a/runtime/vm/pages_test.cc
+++ b/runtime/vm/heap/pages_test.cc
@@ -2,7 +2,7 @@
 // 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.
 
-#include "vm/pages.h"
+#include "vm/heap/pages.h"
 #include "platform/assert.h"
 #include "vm/unit_test.h"
 
diff --git a/runtime/vm/safepoint.cc b/runtime/vm/heap/safepoint.cc
similarity index 99%
rename from runtime/vm/safepoint.cc
rename to runtime/vm/heap/safepoint.cc
index 4fb88a4..2dbde70 100644
--- a/runtime/vm/safepoint.cc
+++ b/runtime/vm/heap/safepoint.cc
@@ -2,7 +2,7 @@
 // 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.
 
-#include "vm/safepoint.h"
+#include "vm/heap/safepoint.h"
 
 #include "vm/thread.h"
 #include "vm/thread_registry.h"
diff --git a/runtime/vm/safepoint.h b/runtime/vm/heap/safepoint.h
similarity index 98%
rename from runtime/vm/safepoint.h
rename to runtime/vm/heap/safepoint.h
index 92f4709..191323f 100644
--- a/runtime/vm/safepoint.h
+++ b/runtime/vm/heap/safepoint.h
@@ -2,8 +2,8 @@
 // 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.
 
-#ifndef RUNTIME_VM_SAFEPOINT_H_
-#define RUNTIME_VM_SAFEPOINT_H_
+#ifndef RUNTIME_VM_HEAP_SAFEPOINT_H_
+#define RUNTIME_VM_HEAP_SAFEPOINT_H_
 
 #include "vm/globals.h"
 #include "vm/lockers.h"
@@ -374,4 +374,4 @@
 
 }  // namespace dart
 
-#endif  // RUNTIME_VM_SAFEPOINT_H_
+#endif  // RUNTIME_VM_HEAP_SAFEPOINT_H_
diff --git a/runtime/vm/scavenger.cc b/runtime/vm/heap/scavenger.cc
similarity index 99%
rename from runtime/vm/scavenger.cc
rename to runtime/vm/heap/scavenger.cc
index 3121e86..32462c0 100644
--- a/runtime/vm/scavenger.cc
+++ b/runtime/vm/heap/scavenger.cc
@@ -2,24 +2,24 @@
 // 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.
 
-#include "vm/scavenger.h"
+#include "vm/heap/scavenger.h"
 
 #include "vm/dart.h"
 #include "vm/dart_api_state.h"
 #include "vm/flag_list.h"
+#include "vm/heap/safepoint.h"
+#include "vm/heap/store_buffer.h"
+#include "vm/heap/verifier.h"
+#include "vm/heap/weak_table.h"
 #include "vm/isolate.h"
 #include "vm/lockers.h"
 #include "vm/object.h"
 #include "vm/object_id_ring.h"
 #include "vm/object_set.h"
-#include "vm/safepoint.h"
 #include "vm/stack_frame.h"
-#include "vm/store_buffer.h"
 #include "vm/thread_registry.h"
 #include "vm/timeline.h"
-#include "vm/verifier.h"
 #include "vm/visitor.h"
-#include "vm/weak_table.h"
 
 namespace dart {
 
diff --git a/runtime/vm/scavenger.h b/runtime/vm/heap/scavenger.h
similarity index 98%
rename from runtime/vm/scavenger.h
rename to runtime/vm/heap/scavenger.h
index 8945766..45e0c3c 100644
--- a/runtime/vm/scavenger.h
+++ b/runtime/vm/heap/scavenger.h
@@ -2,17 +2,17 @@
 // 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.
 
-#ifndef RUNTIME_VM_SCAVENGER_H_
-#define RUNTIME_VM_SCAVENGER_H_
+#ifndef RUNTIME_VM_HEAP_SCAVENGER_H_
+#define RUNTIME_VM_HEAP_SCAVENGER_H_
 
 #include "platform/assert.h"
 #include "platform/utils.h"
 #include "vm/dart.h"
 #include "vm/flags.h"
 #include "vm/globals.h"
+#include "vm/heap/spaces.h"
 #include "vm/raw_object.h"
 #include "vm/ring_buffer.h"
-#include "vm/spaces.h"
 #include "vm/virtual_memory.h"
 #include "vm/visitor.h"
 
@@ -330,4 +330,4 @@
 
 }  // namespace dart
 
-#endif  // RUNTIME_VM_SCAVENGER_H_
+#endif  // RUNTIME_VM_HEAP_SCAVENGER_H_
diff --git a/runtime/vm/scavenger_test.cc b/runtime/vm/heap/scavenger_test.cc
similarity index 97%
rename from runtime/vm/scavenger_test.cc
rename to runtime/vm/heap/scavenger_test.cc
index 80848f6f..64b2a31 100644
--- a/runtime/vm/scavenger_test.cc
+++ b/runtime/vm/heap/scavenger_test.cc
@@ -2,7 +2,7 @@
 // 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.
 
-#include "vm/scavenger.h"
+#include "vm/heap/scavenger.h"
 #include "platform/assert.h"
 #include "vm/unit_test.h"
 #include "vm/visitor.h"
diff --git a/runtime/vm/spaces.h b/runtime/vm/heap/spaces.h
similarity index 85%
rename from runtime/vm/spaces.h
rename to runtime/vm/heap/spaces.h
index 33e2031..3325d2f 100644
--- a/runtime/vm/spaces.h
+++ b/runtime/vm/heap/spaces.h
@@ -2,8 +2,8 @@
 // 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.
 
-#ifndef RUNTIME_VM_SPACES_H_
-#define RUNTIME_VM_SPACES_H_
+#ifndef RUNTIME_VM_HEAP_SPACES_H_
+#define RUNTIME_VM_HEAP_SPACES_H_
 
 // This file contains utilities shared by old and new space.
 // TODO(koda): Create Space base class with Space::CurrentUsage().
@@ -20,4 +20,4 @@
 
 }  // namespace dart
 
-#endif  // RUNTIME_VM_SPACES_H_
+#endif  // RUNTIME_VM_HEAP_SPACES_H_
diff --git a/runtime/vm/store_buffer.cc b/runtime/vm/heap/store_buffer.cc
similarity index 99%
rename from runtime/vm/store_buffer.cc
rename to runtime/vm/heap/store_buffer.cc
index 851c847..00bf036 100644
--- a/runtime/vm/store_buffer.cc
+++ b/runtime/vm/heap/store_buffer.cc
@@ -2,7 +2,7 @@
 // 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.
 
-#include "vm/store_buffer.h"
+#include "vm/heap/store_buffer.h"
 
 #include "platform/assert.h"
 #include "vm/lockers.h"
diff --git a/runtime/vm/store_buffer.h b/runtime/vm/heap/store_buffer.h
similarity index 97%
rename from runtime/vm/store_buffer.h
rename to runtime/vm/heap/store_buffer.h
index 4dab0f7..75aef6f 100644
--- a/runtime/vm/store_buffer.h
+++ b/runtime/vm/heap/store_buffer.h
@@ -2,8 +2,8 @@
 // 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.
 
-#ifndef RUNTIME_VM_STORE_BUFFER_H_
-#define RUNTIME_VM_STORE_BUFFER_H_
+#ifndef RUNTIME_VM_HEAP_STORE_BUFFER_H_
+#define RUNTIME_VM_HEAP_STORE_BUFFER_H_
 
 #include "platform/assert.h"
 #include "vm/globals.h"
@@ -175,4 +175,4 @@
 
 }  // namespace dart
 
-#endif  // RUNTIME_VM_STORE_BUFFER_H_
+#endif  // RUNTIME_VM_HEAP_STORE_BUFFER_H_
diff --git a/runtime/vm/gc_sweeper.cc b/runtime/vm/heap/sweeper.cc
similarity index 97%
rename from runtime/vm/gc_sweeper.cc
rename to runtime/vm/heap/sweeper.cc
index a064f2d..092ba69 100644
--- a/runtime/vm/gc_sweeper.cc
+++ b/runtime/vm/heap/sweeper.cc
@@ -2,14 +2,14 @@
 // 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.
 
-#include "vm/gc_sweeper.h"
+#include "vm/heap/sweeper.h"
 
-#include "vm/freelist.h"
 #include "vm/globals.h"
-#include "vm/heap.h"
+#include "vm/heap/freelist.h"
+#include "vm/heap/heap.h"
+#include "vm/heap/pages.h"
+#include "vm/heap/safepoint.h"
 #include "vm/lockers.h"
-#include "vm/pages.h"
-#include "vm/safepoint.h"
 #include "vm/thread_pool.h"
 #include "vm/timeline.h"
 
diff --git a/runtime/vm/gc_sweeper.h b/runtime/vm/heap/sweeper.h
similarity index 92%
rename from runtime/vm/gc_sweeper.h
rename to runtime/vm/heap/sweeper.h
index ba9aaef..609b962 100644
--- a/runtime/vm/gc_sweeper.h
+++ b/runtime/vm/heap/sweeper.h
@@ -2,8 +2,8 @@
 // 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.
 
-#ifndef RUNTIME_VM_GC_SWEEPER_H_
-#define RUNTIME_VM_GC_SWEEPER_H_
+#ifndef RUNTIME_VM_HEAP_SWEEPER_H_
+#define RUNTIME_VM_HEAP_SWEEPER_H_
 
 #include "vm/globals.h"
 
@@ -43,4 +43,4 @@
 
 }  // namespace dart
 
-#endif  // RUNTIME_VM_GC_SWEEPER_H_
+#endif  // RUNTIME_VM_HEAP_SWEEPER_H_
diff --git a/runtime/vm/verifier.cc b/runtime/vm/heap/verifier.cc
similarity index 97%
rename from runtime/vm/verifier.cc
rename to runtime/vm/heap/verifier.cc
index 65d854b..808036c 100644
--- a/runtime/vm/verifier.cc
+++ b/runtime/vm/heap/verifier.cc
@@ -2,13 +2,12 @@
 // 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.
 
-#include "vm/verifier.h"
+#include "vm/heap/verifier.h"
 
 #include "platform/assert.h"
 #include "vm/dart.h"
 #include "vm/dart_api_state.h"
-#include "vm/freelist.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/isolate.h"
 #include "vm/object.h"
 #include "vm/object_set.h"
diff --git a/runtime/vm/verifier.h b/runtime/vm/heap/verifier.h
similarity index 95%
rename from runtime/vm/verifier.h
rename to runtime/vm/heap/verifier.h
index 57b374b..f12ba82 100644
--- a/runtime/vm/verifier.h
+++ b/runtime/vm/heap/verifier.h
@@ -2,8 +2,8 @@
 // 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.
 
-#ifndef RUNTIME_VM_VERIFIER_H_
-#define RUNTIME_VM_VERIFIER_H_
+#ifndef RUNTIME_VM_HEAP_VERIFIER_H_
+#define RUNTIME_VM_HEAP_VERIFIER_H_
 
 #include "vm/flags.h"
 #include "vm/globals.h"
@@ -86,4 +86,4 @@
 
 }  // namespace dart
 
-#endif  // RUNTIME_VM_VERIFIER_H_
+#endif  // RUNTIME_VM_HEAP_VERIFIER_H_
diff --git a/runtime/vm/weak_code.cc b/runtime/vm/heap/weak_code.cc
similarity index 98%
rename from runtime/vm/weak_code.cc
rename to runtime/vm/heap/weak_code.cc
index b7a2dda..c1a3d53 100644
--- a/runtime/vm/weak_code.cc
+++ b/runtime/vm/heap/weak_code.cc
@@ -2,7 +2,7 @@
 // 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.
 
-#include "vm/weak_code.h"
+#include "vm/heap/weak_code.h"
 
 #include "platform/assert.h"
 
diff --git a/runtime/vm/weak_code.h b/runtime/vm/heap/weak_code.h
similarity index 90%
rename from runtime/vm/weak_code.h
rename to runtime/vm/heap/weak_code.h
index 42da4d7..74b4389 100644
--- a/runtime/vm/weak_code.h
+++ b/runtime/vm/heap/weak_code.h
@@ -2,8 +2,8 @@
 // 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.
 
-#ifndef RUNTIME_VM_WEAK_CODE_H_
-#define RUNTIME_VM_WEAK_CODE_H_
+#ifndef RUNTIME_VM_HEAP_WEAK_CODE_H_
+#define RUNTIME_VM_HEAP_WEAK_CODE_H_
 
 #include "vm/allocation.h"
 #include "vm/globals.h"
@@ -39,4 +39,4 @@
 
 }  // namespace dart
 
-#endif  // RUNTIME_VM_WEAK_CODE_H_
+#endif  // RUNTIME_VM_HEAP_WEAK_CODE_H_
diff --git a/runtime/vm/weak_table.cc b/runtime/vm/heap/weak_table.cc
similarity index 98%
rename from runtime/vm/weak_table.cc
rename to runtime/vm/heap/weak_table.cc
index f9f44f1..4fd7917 100644
--- a/runtime/vm/weak_table.cc
+++ b/runtime/vm/heap/weak_table.cc
@@ -2,7 +2,7 @@
 // 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.
 
-#include "vm/weak_table.h"
+#include "vm/heap/weak_table.h"
 
 #include "platform/assert.h"
 #include "vm/raw_object.h"
diff --git a/runtime/vm/weak_table.h b/runtime/vm/heap/weak_table.h
similarity index 97%
rename from runtime/vm/weak_table.h
rename to runtime/vm/heap/weak_table.h
index 783013b..c7970cf 100644
--- a/runtime/vm/weak_table.h
+++ b/runtime/vm/heap/weak_table.h
@@ -2,8 +2,8 @@
 // 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.
 
-#ifndef RUNTIME_VM_WEAK_TABLE_H_
-#define RUNTIME_VM_WEAK_TABLE_H_
+#ifndef RUNTIME_VM_HEAP_WEAK_TABLE_H_
+#define RUNTIME_VM_HEAP_WEAK_TABLE_H_
 
 #include "vm/globals.h"
 
@@ -188,4 +188,4 @@
 
 }  // namespace dart
 
-#endif  // RUNTIME_VM_WEAK_TABLE_H_
+#endif  // RUNTIME_VM_HEAP_WEAK_TABLE_H_
diff --git a/runtime/vm/image_snapshot.cc b/runtime/vm/image_snapshot.cc
index 162f58b..90fa8fb 100644
--- a/runtime/vm/image_snapshot.cc
+++ b/runtime/vm/image_snapshot.cc
@@ -9,7 +9,7 @@
 #include "vm/dwarf.h"
 #include "vm/hash.h"
 #include "vm/hash_map.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/json_writer.h"
 #include "vm/object.h"
 #include "vm/stub_code.h"
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index f0840c0..af5f2ad 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -19,7 +19,10 @@
 #include "vm/debugger.h"
 #include "vm/deopt_instructions.h"
 #include "vm/flags.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
+#include "vm/heap/safepoint.h"
+#include "vm/heap/store_buffer.h"
+#include "vm/heap/verifier.h"
 #include "vm/image_snapshot.h"
 #include "vm/interpreter.h"
 #include "vm/isolate_reload.h"
@@ -34,13 +37,11 @@
 #include "vm/port.h"
 #include "vm/profiler.h"
 #include "vm/reusable_handles.h"
-#include "vm/safepoint.h"
 #include "vm/service.h"
 #include "vm/service_event.h"
 #include "vm/service_isolate.h"
 #include "vm/simulator.h"
 #include "vm/stack_frame.h"
-#include "vm/store_buffer.h"
 #include "vm/stub_code.h"
 #include "vm/symbols.h"
 #include "vm/tags.h"
@@ -49,7 +50,6 @@
 #include "vm/timeline.h"
 #include "vm/timeline_analysis.h"
 #include "vm/timer.h"
-#include "vm/verifier.h"
 #include "vm/visitor.h"
 
 namespace dart {
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index 2dad860..7097f5a 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -14,6 +14,7 @@
 #include "vm/fixed_cache.h"
 #include "vm/growable_array.h"
 #include "vm/handles.h"
+#include "vm/heap/verifier.h"
 #include "vm/megamorphic_cache_table.h"
 #include "vm/metrics.h"
 #include "vm/os_thread.h"
@@ -22,7 +23,6 @@
 #include "vm/thread.h"
 #include "vm/timer.h"
 #include "vm/token_position.h"
-#include "vm/verifier.h"
 
 namespace dart {
 
diff --git a/runtime/vm/isolate_reload.cc b/runtime/vm/isolate_reload.cc
index f31cbb9..6f7c825 100644
--- a/runtime/vm/isolate_reload.cc
+++ b/runtime/vm/isolate_reload.cc
@@ -4,11 +4,12 @@
 
 #include "vm/isolate_reload.h"
 
-#include "vm/become.h"
 #include "vm/bit_vector.h"
 #include "vm/compiler/jit/compiler.h"
 #include "vm/dart_api_impl.h"
 #include "vm/hash_table.h"
+#include "vm/heap/become.h"
+#include "vm/heap/safepoint.h"
 #include "vm/isolate.h"
 #include "vm/kernel_isolate.h"
 #include "vm/kernel_loader.h"
@@ -17,7 +18,6 @@
 #include "vm/object_store.h"
 #include "vm/parser.h"
 #include "vm/runtime_entry.h"
-#include "vm/safepoint.h"
 #include "vm/service_event.h"
 #include "vm/stack_frame.h"
 #include "vm/thread.h"
diff --git a/runtime/vm/json_stream.cc b/runtime/vm/json_stream.cc
index da65506..c320591 100644
--- a/runtime/vm/json_stream.cc
+++ b/runtime/vm/json_stream.cc
@@ -7,11 +7,11 @@
 #include "include/dart_native_api.h"
 #include "vm/dart_entry.h"
 #include "vm/debugger.h"
+#include "vm/heap/safepoint.h"
 #include "vm/json_stream.h"
 #include "vm/message.h"
 #include "vm/metrics.h"
 #include "vm/object.h"
-#include "vm/safepoint.h"
 #include "vm/service.h"
 #include "vm/service_event.h"
 #include "vm/thread_registry.h"
diff --git a/runtime/vm/lockers.cc b/runtime/vm/lockers.cc
index 63104ca..7a43e4a 100644
--- a/runtime/vm/lockers.cc
+++ b/runtime/vm/lockers.cc
@@ -4,7 +4,7 @@
 
 #include "vm/lockers.h"
 #include "platform/assert.h"
-#include "vm/safepoint.h"
+#include "vm/heap/safepoint.h"
 
 namespace dart {
 
diff --git a/runtime/vm/native_entry.cc b/runtime/vm/native_entry.cc
index 3aaf67e..8b033c5 100644
--- a/runtime/vm/native_entry.cc
+++ b/runtime/vm/native_entry.cc
@@ -10,10 +10,10 @@
 #include "vm/code_patcher.h"
 #include "vm/dart_api_impl.h"
 #include "vm/dart_api_state.h"
+#include "vm/heap/safepoint.h"
 #include "vm/native_symbol.h"
 #include "vm/object_store.h"
 #include "vm/reusable_handles.h"
-#include "vm/safepoint.h"
 #include "vm/stack_frame.h"
 #include "vm/symbols.h"
 #include "vm/tags.h"
diff --git a/runtime/vm/native_entry.h b/runtime/vm/native_entry.h
index 638d1c1..6c1e5ef 100644
--- a/runtime/vm/native_entry.h
+++ b/runtime/vm/native_entry.h
@@ -10,10 +10,10 @@
 #include "vm/allocation.h"
 #include "vm/compiler/assembler/assembler.h"
 #include "vm/exceptions.h"
+#include "vm/heap/verifier.h"
 #include "vm/log.h"
 #include "vm/native_arguments.h"
 #include "vm/runtime_entry.h"
-#include "vm/verifier.h"
 
 #include "include/dart_api.h"
 
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index 77a7c1e..dac4c85 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -6,7 +6,6 @@
 
 #include "include/dart_api.h"
 #include "platform/assert.h"
-#include "vm/become.h"
 #include "vm/bit_vector.h"
 #include "vm/bootstrap.h"
 #include "vm/class_finalizer.h"
@@ -31,7 +30,9 @@
 #include "vm/growable_array.h"
 #include "vm/hash.h"
 #include "vm/hash_table.h"
-#include "vm/heap.h"
+#include "vm/heap/become.h"
+#include "vm/heap/heap.h"
+#include "vm/heap/weak_code.h"
 #include "vm/isolate_reload.h"
 #include "vm/kernel.h"
 #include "vm/kernel_isolate.h"
@@ -54,7 +55,6 @@
 #include "vm/type_table.h"
 #include "vm/type_testing_stubs.h"
 #include "vm/unicode.h"
-#include "vm/weak_code.h"
 #include "vm/zone_text_buffer.h"
 
 namespace dart {
diff --git a/runtime/vm/object.h b/runtime/vm/object.h
index c941271..89513ea 100644
--- a/runtime/vm/object.h
+++ b/runtime/vm/object.h
@@ -15,7 +15,7 @@
 #include "vm/globals.h"
 #include "vm/growable_array.h"
 #include "vm/handles.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/isolate.h"
 #include "vm/json_stream.h"
 #include "vm/os.h"
diff --git a/runtime/vm/parser.cc b/runtime/vm/parser.cc
index c2090ec..a7a67b3 100644
--- a/runtime/vm/parser.cc
+++ b/runtime/vm/parser.cc
@@ -22,7 +22,8 @@
 #include "vm/growable_array.h"
 #include "vm/handles.h"
 #include "vm/hash_table.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
+#include "vm/heap/safepoint.h"
 #include "vm/isolate.h"
 #include "vm/longjump.h"
 #include "vm/native_arguments.h"
@@ -32,7 +33,6 @@
 #include "vm/os.h"
 #include "vm/regexp_assembler.h"
 #include "vm/resolver.h"
-#include "vm/safepoint.h"
 #include "vm/scanner.h"
 #include "vm/scopes.h"
 #include "vm/stack_frame.h"
diff --git a/runtime/vm/raw_object.cc b/runtime/vm/raw_object.cc
index cbe81d8..92833a5 100644
--- a/runtime/vm/raw_object.cc
+++ b/runtime/vm/raw_object.cc
@@ -4,10 +4,10 @@
 
 #include "vm/raw_object.h"
 
-#include "vm/become.h"
 #include "vm/class_table.h"
 #include "vm/dart.h"
-#include "vm/freelist.h"
+#include "vm/heap/become.h"
+#include "vm/heap/freelist.h"
 #include "vm/isolate.h"
 #include "vm/object.h"
 #include "vm/visitor.h"
diff --git a/runtime/vm/runtime_entry.cc b/runtime/vm/runtime_entry.cc
index ae459f7..9a87566 100644
--- a/runtime/vm/runtime_entry.cc
+++ b/runtime/vm/runtime_entry.cc
@@ -14,6 +14,7 @@
 #include "vm/deopt_instructions.h"
 #include "vm/exceptions.h"
 #include "vm/flags.h"
+#include "vm/heap/verifier.h"
 #include "vm/instructions.h"
 #include "vm/interpreter.h"
 #include "vm/kernel_isolate.h"
@@ -27,7 +28,6 @@
 #include "vm/symbols.h"
 #include "vm/thread_registry.h"
 #include "vm/type_testing_stubs.h"
-#include "vm/verifier.h"
 
 namespace dart {
 
diff --git a/runtime/vm/runtime_entry.h b/runtime/vm/runtime_entry.h
index 86c109d..4dd4935 100644
--- a/runtime/vm/runtime_entry.h
+++ b/runtime/vm/runtime_entry.h
@@ -7,9 +7,9 @@
 
 #include "vm/allocation.h"
 #include "vm/flags.h"
+#include "vm/heap/safepoint.h"
 #include "vm/native_arguments.h"
 #include "vm/runtime_entry_list.h"
-#include "vm/safepoint.h"
 #include "vm/tags.h"
 
 namespace dart {
diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc
index f5d706a..fc90307 100644
--- a/runtime/vm/service.cc
+++ b/runtime/vm/service.cc
@@ -15,6 +15,7 @@
 #include "vm/dart_api_state.h"
 #include "vm/dart_entry.h"
 #include "vm/debugger.h"
+#include "vm/heap/safepoint.h"
 #include "vm/isolate.h"
 #include "vm/kernel_isolate.h"
 #include "vm/lockers.h"
@@ -33,7 +34,6 @@
 #include "vm/profiler.h"
 #include "vm/profiler_service.h"
 #include "vm/reusable_handles.h"
-#include "vm/safepoint.h"
 #include "vm/service_event.h"
 #include "vm/service_isolate.h"
 #include "vm/source_report.h"
diff --git a/runtime/vm/service_event.h b/runtime/vm/service_event.h
index d0db082..2a267f9 100644
--- a/runtime/vm/service_event.h
+++ b/runtime/vm/service_event.h
@@ -6,7 +6,7 @@
 #define RUNTIME_VM_SERVICE_EVENT_H_
 
 #include "vm/globals.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 
 namespace dart {
 
diff --git a/runtime/vm/service_test.cc b/runtime/vm/service_test.cc
index 70c3573..7291161 100644
--- a/runtime/vm/service_test.cc
+++ b/runtime/vm/service_test.cc
@@ -10,12 +10,12 @@
 #include "vm/debugger.h"
 #include "vm/debugger_api_impl_test.h"
 #include "vm/globals.h"
+#include "vm/heap/safepoint.h"
 #include "vm/message_handler.h"
 #include "vm/object_id_ring.h"
 #include "vm/os.h"
 #include "vm/port.h"
 #include "vm/profiler.h"
-#include "vm/safepoint.h"
 #include "vm/service.h"
 #include "vm/unit_test.h"
 
diff --git a/runtime/vm/snapshot.cc b/runtime/vm/snapshot.cc
index 5f97708..26fe952 100644
--- a/runtime/vm/snapshot.cc
+++ b/runtime/vm/snapshot.cc
@@ -9,7 +9,7 @@
 #include "vm/class_finalizer.h"
 #include "vm/dart.h"
 #include "vm/exceptions.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/longjump.h"
 #include "vm/message.h"
 #include "vm/object.h"
diff --git a/runtime/vm/stack_frame.cc b/runtime/vm/stack_frame.cc
index 63e6fb4..940b83c 100644
--- a/runtime/vm/stack_frame.cc
+++ b/runtime/vm/stack_frame.cc
@@ -5,9 +5,9 @@
 #include "vm/stack_frame.h"
 
 #include "platform/memory_sanitizer.h"
-#include "vm/become.h"
 #include "vm/compiler/assembler/assembler.h"
 #include "vm/deopt_instructions.h"
+#include "vm/heap/become.h"
 #include "vm/isolate.h"
 #include "vm/object.h"
 #include "vm/object_store.h"
diff --git a/runtime/vm/stack_frame_test.cc b/runtime/vm/stack_frame_test.cc
index 6facc4f..896c8bd 100644
--- a/runtime/vm/stack_frame_test.cc
+++ b/runtime/vm/stack_frame_test.cc
@@ -9,9 +9,9 @@
 #include "vm/compiler/jit/compiler.h"
 #include "vm/dart_api_impl.h"
 #include "vm/dart_entry.h"
+#include "vm/heap/verifier.h"
 #include "vm/resolver.h"
 #include "vm/unit_test.h"
-#include "vm/verifier.h"
 #include "vm/zone.h"
 
 namespace dart {
diff --git a/runtime/vm/stub_code.cc b/runtime/vm/stub_code.cc
index 05baaee..4069e998 100644
--- a/runtime/vm/stub_code.cc
+++ b/runtime/vm/stub_code.cc
@@ -10,8 +10,8 @@
 #include "vm/compiler/assembler/assembler.h"
 #include "vm/compiler/assembler/disassembler.h"
 #include "vm/flags.h"
+#include "vm/heap/safepoint.h"
 #include "vm/object_store.h"
-#include "vm/safepoint.h"
 #include "vm/snapshot.h"
 #include "vm/virtual_memory.h"
 #include "vm/visitor.h"
diff --git a/runtime/vm/stub_code_arm.cc b/runtime/vm/stub_code_arm.cc
index 81415cd..37aa4b6 100644
--- a/runtime/vm/stub_code_arm.cc
+++ b/runtime/vm/stub_code_arm.cc
@@ -11,7 +11,7 @@
 #include "vm/compiler/jit/compiler.h"
 #include "vm/cpu.h"
 #include "vm/dart_entry.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/instructions.h"
 #include "vm/isolate.h"
 #include "vm/object_store.h"
diff --git a/runtime/vm/stub_code_arm64.cc b/runtime/vm/stub_code_arm64.cc
index fbec9ab..647ae0b 100644
--- a/runtime/vm/stub_code_arm64.cc
+++ b/runtime/vm/stub_code_arm64.cc
@@ -9,7 +9,7 @@
 #include "vm/compiler/backend/flow_graph_compiler.h"
 #include "vm/compiler/jit/compiler.h"
 #include "vm/dart_entry.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/instructions.h"
 #include "vm/object_store.h"
 #include "vm/runtime_entry.h"
diff --git a/runtime/vm/stub_code_dbc.cc b/runtime/vm/stub_code_dbc.cc
index 130e4f8..a6e6a76 100644
--- a/runtime/vm/stub_code_dbc.cc
+++ b/runtime/vm/stub_code_dbc.cc
@@ -10,7 +10,7 @@
 #include "vm/compiler/jit/compiler.h"
 #include "vm/cpu.h"
 #include "vm/dart_entry.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/instructions.h"
 #include "vm/object_store.h"
 #include "vm/runtime_entry.h"
diff --git a/runtime/vm/stub_code_ia32.cc b/runtime/vm/stub_code_ia32.cc
index 3d9552b..bdc494b 100644
--- a/runtime/vm/stub_code_ia32.cc
+++ b/runtime/vm/stub_code_ia32.cc
@@ -9,11 +9,11 @@
 #include "vm/compiler/backend/flow_graph_compiler.h"
 #include "vm/compiler/jit/compiler.h"
 #include "vm/dart_entry.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
+#include "vm/heap/scavenger.h"
 #include "vm/instructions.h"
 #include "vm/object_store.h"
 #include "vm/resolver.h"
-#include "vm/scavenger.h"
 #include "vm/stack_frame.h"
 #include "vm/stub_code.h"
 #include "vm/tags.h"
diff --git a/runtime/vm/stub_code_x64.cc b/runtime/vm/stub_code_x64.cc
index f1a6ef4..111357c 100644
--- a/runtime/vm/stub_code_x64.cc
+++ b/runtime/vm/stub_code_x64.cc
@@ -14,11 +14,11 @@
 #include "vm/compiler/jit/compiler.h"
 #include "vm/constants_x64.h"
 #include "vm/dart_entry.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
+#include "vm/heap/scavenger.h"
 #include "vm/instructions.h"
 #include "vm/object_store.h"
 #include "vm/resolver.h"
-#include "vm/scavenger.h"
 #include "vm/stack_frame.h"
 #include "vm/tags.h"
 #include "vm/type_testing_stubs.h"
diff --git a/runtime/vm/thread.h b/runtime/vm/thread.h
index 57e93e0..eb81ca54 100644
--- a/runtime/vm/thread.h
+++ b/runtime/vm/thread.h
@@ -12,9 +12,9 @@
 #include "vm/bitfield.h"
 #include "vm/globals.h"
 #include "vm/handles.h"
+#include "vm/heap/store_buffer.h"
 #include "vm/os_thread.h"
 #include "vm/runtime_entry_list.h"
-#include "vm/store_buffer.h"
 
 namespace dart {
 
diff --git a/runtime/vm/thread_test.cc b/runtime/vm/thread_test.cc
index e4155eb..92e04a1 100644
--- a/runtime/vm/thread_test.cc
+++ b/runtime/vm/thread_test.cc
@@ -3,10 +3,10 @@
 // BSD-style license that can be found in the LICENSE file.
 
 #include "platform/assert.h"
+#include "vm/heap/safepoint.h"
 #include "vm/isolate.h"
 #include "vm/lockers.h"
 #include "vm/profiler.h"
-#include "vm/safepoint.h"
 #include "vm/stack_frame.h"
 #include "vm/thread_pool.h"
 #include "vm/unit_test.h"
diff --git a/runtime/vm/unit_test.h b/runtime/vm/unit_test.h
index 24f844e..5dd5122 100644
--- a/runtime/vm/unit_test.h
+++ b/runtime/vm/unit_test.h
@@ -13,7 +13,7 @@
 #include "vm/dart.h"
 #include "vm/dart_api_state.h"
 #include "vm/globals.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/isolate.h"
 #include "vm/longjump.h"
 #include "vm/object.h"
diff --git a/runtime/vm/virtual_memory_test.cc b/runtime/vm/virtual_memory_test.cc
index 7d725d0..9454ecf 100644
--- a/runtime/vm/virtual_memory_test.cc
+++ b/runtime/vm/virtual_memory_test.cc
@@ -4,7 +4,7 @@
 
 #include "vm/virtual_memory.h"
 #include "platform/assert.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/unit_test.h"
 
 namespace dart {
diff --git a/runtime/vm/vm_sources.gni b/runtime/vm/vm_sources.gni
index d227772..93d8ac3 100644
--- a/runtime/vm/vm_sources.gni
+++ b/runtime/vm/vm_sources.gni
@@ -16,8 +16,6 @@
   "base64.cc",
   "base64.h",
   "base_isolate.h",
-  "become.cc",
-  "become.h",
   "bit_vector.cc",
   "bit_vector.h",
   "bitfield.h",
@@ -102,14 +100,6 @@
   "flag_list.h",
   "flags.cc",
   "flags.h",
-  "freelist.cc",
-  "freelist.h",
-  "gc_compactor.cc",
-  "gc_compactor.h",
-  "gc_marker.cc",
-  "gc_marker.h",
-  "gc_sweeper.cc",
-  "gc_sweeper.h",
   "gdb_helpers.cc",
   "globals.h",
   "growable_array.h",
@@ -118,8 +108,6 @@
   "handles_impl.h",
   "hash_map.h",
   "hash_table.h",
-  "heap.cc",
-  "heap.h",
   "image_snapshot.cc",
   "image_snapshot.h",
   "instructions.h",
@@ -215,8 +203,6 @@
   "os_thread_win.cc",
   "os_thread_win.h",
   "os_win.cc",
-  "pages.cc",
-  "pages.h",
   "parser.cc",
   "parser.h",
   "port.cc",
@@ -264,12 +250,8 @@
   "runtime_entry_ia32.cc",
   "runtime_entry_list.h",
   "runtime_entry_x64.cc",
-  "safepoint.cc",
-  "safepoint.h",
   "scanner.cc",
   "scanner.h",
-  "scavenger.cc",
-  "scavenger.h",
   "scope_timer.h",
   "scopes.cc",
   "scopes.h",
@@ -297,7 +279,6 @@
   "snapshot_ids.h",
   "source_report.cc",
   "source_report.h",
-  "spaces.h",
   "stack_frame.cc",
   "stack_frame.h",
   "stack_frame_arm.h",
@@ -308,8 +289,6 @@
   "stack_frame_x64.h",
   "stack_trace.cc",
   "stack_trace.h",
-  "store_buffer.cc",
-  "store_buffer.h",
   "stub_code.cc",
   "stub_code.h",
   "stub_code_arm.cc",
@@ -359,8 +338,6 @@
   "unicode_data.cc",
   "uri.cc",
   "uri.h",
-  "verifier.cc",
-  "verifier.h",
   "virtual_memory.cc",
   "virtual_memory.h",
   "virtual_memory_android.cc",
@@ -369,10 +346,6 @@
   "virtual_memory_macos.cc",
   "virtual_memory_win.cc",
   "visitor.h",
-  "weak_code.cc",
-  "weak_code.h",
-  "weak_table.cc",
-  "weak_table.h",
   "zone.cc",
   "zone.h",
   "zone_text_buffer.cc",
@@ -385,9 +358,9 @@
   "ast_printer_test.cc",
   "ast_test.cc",
   "atomic_test.cc",
+  "base64_test.cc",
   "benchmark_test.cc",
   "benchmark_test.h",
-  "base64_test.cc",
   "bit_set_test.cc",
   "bit_vector_test.cc",
   "bitfield_test.cc",
@@ -410,13 +383,11 @@
   "find_code_object_test.cc",
   "fixed_cache_test.cc",
   "flags_test.cc",
-  "freelist_test.cc",
   "growable_array_test.cc",
   "guard_field_test.cc",
   "handles_test.cc",
   "hash_map_test.cc",
   "hash_table_test.cc",
-  "heap_test.cc",
   "instructions_arm64_test.cc",
   "instructions_arm_test.cc",
   "instructions_ia32_test.cc",
@@ -444,7 +415,6 @@
   "object_test.cc",
   "object_x64_test.cc",
   "os_test.cc",
-  "pages_test.cc",
   "parser_test.cc",
   "port_test.cc",
   "profiler_test.cc",
@@ -452,7 +422,6 @@
   "resolver_test.cc",
   "ring_buffer_test.cc",
   "scanner_test.cc",
-  "scavenger_test.cc",
   "scopes_test.cc",
   "service_test.cc",
   "snapshot_test.cc",
diff --git a/runtime/vm/zone.cc b/runtime/vm/zone.cc
index ef35be1..313e452 100644
--- a/runtime/vm/zone.cc
+++ b/runtime/vm/zone.cc
@@ -9,7 +9,7 @@
 #include "vm/dart_api_state.h"
 #include "vm/flags.h"
 #include "vm/handles_impl.h"
-#include "vm/heap.h"
+#include "vm/heap/heap.h"
 #include "vm/os.h"
 
 namespace dart {