diff --git a/runtime/bin/BUILD.gn b/runtime/bin/BUILD.gn
index 7c93362..5b5cacc 100644
--- a/runtime/bin/BUILD.gn
+++ b/runtime/bin/BUILD.gn
@@ -839,31 +839,6 @@
   }
 }
 
-dart_executable("dart_precompiled_runtime_for_linking") {
-  extra_configs = [ "..:dart_precompiled_runtime_config" ]
-  extra_deps = [
-    "..:libdart_precompiled_runtime",
-    "../platform:libdart_platform_precompiled_runtime",
-  ]
-  if (dart_runtime_mode != "release") {
-    extra_deps += [ "../observatory:standalone_observatory_archive" ]
-  }
-  extra_sources = [
-    "builtin.cc",
-    "gzip.cc",
-    "gzip.h",
-    "loader.cc",
-    "loader.h",
-    "main.cc",
-    "snapshot_empty.cc",
-  ]
-  if (dart_runtime_mode == "release") {
-    extra_sources += [ "observatory_assets_empty.cc" ]
-  }
-  extra_defines = [ "DART_LINK_APP_SNAPSHOT" ]
-  target_type = "static_library"
-}
-
 dart_executable("dartaotruntime") {
   extra_configs = [ "..:dart_precompiled_runtime_config" ]
   extra_deps = [
diff --git a/runtime/bin/main.cc b/runtime/bin/main.cc
index 180cb3f..c9edf66 100644
--- a/runtime/bin/main.cc
+++ b/runtime/bin/main.cc
@@ -46,15 +46,6 @@
 extern const uint8_t kDartCoreIsolateSnapshotInstructions[];
 }
 
-#if defined(DART_LINK_APP_SNAPSHOT)
-extern "C" {
-extern const uint8_t _kDartVmSnapshotData[];
-extern const uint8_t _kDartVmSnapshotInstructions[];
-extern const uint8_t _kDartIsolateSnapshotData[];
-extern const uint8_t _kDartIsolateSnapshotInstructions[];
-}
-#endif
-
 namespace dart {
 namespace bin {
 
@@ -1039,13 +1030,6 @@
 
   Loader::InitOnce();
 
-#if defined(DART_LINK_APP_SNAPSHOT)
-  vm_run_app_snapshot = true;
-  vm_snapshot_data = _kDartVmSnapshotData;
-  vm_snapshot_instructions = _kDartVmSnapshotInstructions;
-  app_isolate_snapshot_data = _kDartIsolateSnapshotData;
-  app_isolate_snapshot_instructions = _kDartIsolateSnapshotInstructions;
-#else
   AppSnapshot* shared_blobs = NULL;
   if (Options::shared_blobs_filename() != NULL) {
     Syslog::PrintErr(
@@ -1068,7 +1052,6 @@
                              &app_isolate_snapshot_data,
                              &app_isolate_snapshot_instructions);
   }
-#endif
 
 #if !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
   // Constant true if PRODUCT or DART_PRECOMPILED_RUNTIME.
@@ -1171,10 +1154,8 @@
   Process::ClearAllSignalHandlers();
   EventHandler::Stop();
 
-#if !defined(DART_LINK_APP_SNAPSHOT)
   delete app_snapshot;
   delete shared_blobs;
-#endif
   free(app_script_uri);
 
   // Free copied argument strings if converted.
diff --git a/runtime/bin/main_options.cc b/runtime/bin/main_options.cc
index 501b9c1..b356da5 100644
--- a/runtime/bin/main_options.cc
+++ b/runtime/bin/main_options.cc
@@ -423,9 +423,6 @@
   // The arguments to the VM are at positions 1 through i-1 in argv.
   Platform::SetExecutableArguments(i, argv);
 
-#if defined(DART_LINK_APP_SNAPSHOT)
-  *script_name = argv[0];
-#else
   // Get the script name.
   if (i < argc) {
     *script_name = argv[i];
@@ -433,7 +430,6 @@
   } else {
     return -1;
   }
-#endif
 
   // Parse out options to be passed to dart main.
   while (i < argc) {
diff --git a/utils/application_snapshot.gni b/utils/application_snapshot.gni
index e577331..2c257a2 100644
--- a/utils/application_snapshot.gni
+++ b/utils/application_snapshot.gni
@@ -176,49 +176,3 @@
     forward_variables_from(invoker, "*")
   }
 }
-
-template("aot_assembly") {
-  assert(defined(invoker.main_dart), "Must specify 'main_dart'")
-  aot_vm_args = []
-  if (defined(invoker.vm_args)) {
-    aot_vm_args = invoker.vm_args
-  }
-  main_dart = invoker.main_dart
-  aot_vm_args = aot_vm_args + [ rebase_path("$main_dart") ]
-  name = target_name
-  if (defined(invoker.name)) {
-    name = invoker.name
-  }
-  extra_deps = []
-  if (defined(invoker.deps)) {
-    extra_deps += invoker.deps
-  }
-  extra_inputs = [ main_dart ]
-  if (defined(invoker.inputs)) {
-    extra_inputs += invoker.inputs
-  }
-  output = "$root_gen_dir/$name.dart.S"
-  if (defined(invoker.output)) {
-    output = invoker.output
-  }
-  gen_snapshot_action(target_name) {
-    deps = extra_deps
-    depfile = "$output.d"
-
-    inputs = extra_inputs
-
-    outputs = [
-      output,
-    ]
-
-    abs_output = rebase_path(output, root_build_dir)
-
-    vm_args = [
-      "--deterministic",
-      "--snapshot-kind=app-aot-assembly",
-      "--assembly=$abs_output",
-    ] + aot_vm_args
-
-    args = []
-  }
-}
diff --git a/utils/dartanalyzer/BUILD.gn b/utils/dartanalyzer/BUILD.gn
index ad45cf1..7665d74 100644
--- a/utils/dartanalyzer/BUILD.gn
+++ b/utils/dartanalyzer/BUILD.gn
@@ -31,65 +31,6 @@
   name = "dartanalyzer"
 }
 
-if (current_os == "linux") {
-  prebuilt_dart_action("dart_analyzer_dill") {
-    deps = [
-      "../../runtime/vm:vm_platform",
-      "../../runtime/vm:kernel_platform_files($dart_host_toolchain)",
-    ]
-    dart_analyzer_script = "../../pkg/vm/bin/kernel_service.dart"
-    gen_kernel_script = "../../pkg/vm/bin/gen_kernel.dart"
-
-    inputs = [
-      gen_kernel_script,
-      dart_analyzer_script,
-      "$root_out_dir/vm_platform_strong.dill",
-    ]
-    output = "$root_gen_dir/dart_analyzer.dill"
-    outputs = [
-      output,
-    ]
-
-    depfile = "$root_gen_dir/dart_analyzer_dill.d"
-    abs_depfile = rebase_path(depfile)
-    rebased_output = rebase_path(output, root_out_dir)
-    vm_args = [
-      "--depfile=$abs_depfile",
-      "--depfile_output_filename=$rebased_output",
-    ]
-
-    script = gen_kernel_script
-
-    args = [
-      "--packages=" + rebase_path("../../.packages"),
-      "--platform=" + rebase_path("$root_out_dir/vm_platform_strong.dill"),
-      "--aot",
-      "--no-embed-sources",
-      "--output=" + rebase_path("$root_gen_dir/dart_analyzer.dill"),
-      rebase_path(dart_analyzer_script),
-    ]
-  }
-
-  aot_assembly("dartanalyzer_aot_assembly") {
-    main_dart = "$root_gen_dir/dart_analyzer.dill"
-    name = "dartanalyzer"
-    deps = [
-      ":dart_analyzer_dill"
-    ]
-  }
-
-  # This target is for Goma. It should not be used in the SDK.
-  executable("dartanalyzer_aot") {
-    deps = [
-      "../../runtime/bin:dart_precompiled_runtime_for_linking",
-      ":dartanalyzer_aot_assembly",
-    ]
-    sources = [
-      "$root_gen_dir/dartanalyzer.dart.S"
-    ]
-  }
-}
-
 sdk_lib_files = exec_script("../../tools/list_dart_files.py",
                             [
                               "absolute",
