[ddc] Update ddb to run with ddc/legacy modules in d8

- Fixes broken benchmarks in ddc because the benchmarks run in
  d8 with the ddc module system can handle conflicting library
  names more gracefully than es6.

- In the future we need to update the source of truth for
  dart_library.js so we can keep the file in sync.

- Removes the ability for ddb to run with any precompiled sdk.js
  from a dart installation. Now you must run a build first and
  the sdk.js files from that build will be used. This means the
  `--debug` flag no longer changes which sdk.js files are used.

Change-Id: Icaf78956f93ff643d23e68001354ec08c9c28b12
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/166926
Reviewed-by: Mark Zhou <markzipan@google.com>
Commit-Queue: Nicholas Shahan <nshahan@google.com>
diff --git a/pkg/dev_compiler/lib/js/legacy/dart_library.js b/pkg/dev_compiler/lib/js/legacy/dart_library.js
index 82670a9..609945c 100644
--- a/pkg/dev_compiler/lib/js/legacy/dart_library.js
+++ b/pkg/dev_compiler/lib/js/legacy/dart_library.js
@@ -293,14 +293,18 @@
       if (library.onReloadEnd) {
         library.onReloadEnd();
         return;
-      } else {
-        document.body = _originalBody;
+      } else { 
+        if (dart_sdk.dart.global.document) {
+          dart_sdk.dart.global.document.body = _originalBody;
+        }
       }
     } else {
       // If not a reload then store the initial html to reset it on reload.
-      _originalBody = document.body.cloneNode(true);
+      if (dart_sdk.dart.global.document) {
+        _originalBody = dart_sdk.dart.global.document.body.cloneNode(true);
+      }
     }
-    library.main();
+    library.main([]);
   }
   dart_library.start = start;
 
diff --git a/pkg/dev_compiler/tool/ddb b/pkg/dev_compiler/tool/ddb
index 915c1fe..65888a8 100755
--- a/pkg/dev_compiler/tool/ddb
+++ b/pkg/dev_compiler/tool/ddb
@@ -209,7 +209,7 @@
       break;
     case 'd8':
       d8 = true;
-      mod = 'es6';
+      mod = 'legacy';
       break;
     case 'chrome':
       chrome = true;
@@ -217,24 +217,14 @@
       break;
   }
 
-  String ddcSdk;
-  String sdkJsPath;
-  String requirePath;
+  var sdkRoot = p.dirname(p.dirname(ddcPath));
+  var buildDir =
+      p.join(sdkRoot, Platform.isMacOS ? 'xcodebuild' : 'out', 'ReleaseX64');
+  var requirePath = p.join(sdkRoot, 'third_party', 'requirejs');
+  var sdkOutlineDill = p.join(buildDir,
+      soundNullSafety ? 'ddc_outline_sound.dill' : 'ddc_outline.dill');
   var suffix = soundNullSafety ? p.join('sound', mod) : p.join('kernel', mod);
-  if (debug) {
-    var sdkRoot = p.dirname(p.dirname(ddcPath));
-    var buildDir =
-        p.join(sdkRoot, Platform.isMacOS ? 'xcodebuild' : 'out', 'ReleaseX64');
-    dartSdk = p.join(buildDir, 'dart-sdk');
-    ddcSdk = p.join(buildDir,
-        soundNullSafety ? 'ddc_outline_sound.dill' : 'ddc_outline.dill');
-    sdkJsPath = p.join(buildDir, 'gen', 'utils', 'dartdevc', suffix);
-    requirePath = p.join(sdkRoot, 'third_party', 'requirejs');
-  } else {
-    ddcSdk = p.join(dartSdk, 'lib', '_internal', 'ddc_sdk.dill');
-    sdkJsPath = p.join(dartSdk, 'lib', 'dev_compiler', suffix);
-    requirePath = sdkJsPath;
-  }
+  var sdkJsPath = p.join(buildDir, 'gen', 'utils', 'dartdevc', suffix);
 
   // Print an initial empty line to separate the invocation from the output.
   if (verbose) {
@@ -245,7 +235,7 @@
     var ddcArgs = [
       if (summarizeText) '--summarize-text',
       '--modules=$mod',
-      '--dart-sdk-summary=$ddcSdk',
+      '--dart-sdk-summary=$sdkOutlineDill',
       for (var summary in summaries) '--summary=$summary',
       for (var experiment in experiments) '--enable-experiment=$experiment',
       if (soundNullSafety) '--sound-null-safety',
@@ -352,18 +342,19 @@
       jsFile.writeAsStringSync(jsContents);
 
       var runjs = '''
-import { dart, _isolate_helper } from '$sdkJsPath/dart_sdk.js';
-import { $libname } from '$basename.js';
+load("$ddcPath/lib/js/legacy/dart_library.js");
+load("$sdkJsPath/dart_sdk.js");
+load("$out");
+
+let dart_sdk = dart_library.import('dart_sdk');
 // Create a self reference for JS interop tests that set fields on self.
-dart.global.self = dart.global;
-let main = $libname.main;
+dart_sdk.dart.global.self = dart_sdk.dart.global;
 if ($nnbd) {
-  dart.weakNullSafetyWarnings(!$soundNullSafety);
-  dart.nonNullAsserts($nonNullAsserts);
-  dart.nativeNonNullAsserts($nativeNonNullAsserts);
+  dart_sdk.dart.weakNullSafetyWarnings(!$soundNullSafety);
+  dart_sdk.dart.nonNullAsserts($nonNullAsserts);
+  dart_sdk.dart.nativeNonNullAsserts($nativeNonNullAsserts);
 }
-_isolate_helper.startRootIsolate(() => {}, []);
-main([]);
+dart_library.start('$basename', '$libname');
 ''';
       var d8File = p.setExtension(out, '.d8.js');
       File(d8File).writeAsStringSync(runjs);
diff --git a/tools/bots/try_benchmarks.sh b/tools/bots/try_benchmarks.sh
index 993294a..8407171 100755
--- a/tools/bots/try_benchmarks.sh
+++ b/tools/bots/try_benchmarks.sh
@@ -338,8 +338,8 @@
     third_party/d8/linux/x64/d8 --stack_size=1024 sdk/lib/_internal/js_runtime/lib/preambles/d8.js out.js
     out/ReleaseX64/dart-sdk/bin/dart pkg/dev_compiler/tool/ddb -r d8 -b third_party/d8/linux/x64/d8 hello.dart
     out/ReleaseX64/dart-sdk/bin/dart pkg/dev_compiler/tool/ddb -r d8 -b third_party/d8/linux/x64/d8 --mode=compile --compile-vm-options=--print-metrics --packages=.packages --out out.js hello.dart
-    out/ReleaseX64/dart-sdk/bin/dart pkg/dev_compiler/tool/ddb -r d8 -b third_party/d8/linux/x64/d8 --enable-experiment=non-nullable --sound-null-safety --debug hello.dart
-    out/ReleaseX64/dart-sdk/bin/dart pkg/dev_compiler/tool/ddb -r d8 -b third_party/d8/linux/x64/d8 --enable-experiment=non-nullable --sound-null-safety --debug --mode=compile --compile-vm-options=--print-metrics --packages=.packages --out out.js hello.dart
+    out/ReleaseX64/dart-sdk/bin/dart pkg/dev_compiler/tool/ddb -r d8 -b third_party/d8/linux/x64/d8 --enable-experiment=non-nullable --sound-null-safety hello.dart
+    out/ReleaseX64/dart-sdk/bin/dart pkg/dev_compiler/tool/ddb -r d8 -b third_party/d8/linux/x64/d8 --enable-experiment=non-nullable --sound-null-safety --mode=compile --compile-vm-options=--print-metrics --packages=.packages --out out.js hello.dart
     out/ReleaseX64/dart pkg/front_end/tool/perf.dart parse hello.dart
     out/ReleaseX64/dart pkg/front_end/tool/perf.dart scan hello.dart
     out/ReleaseX64/dart pkg/front_end/tool/fasta_perf.dart kernel_gen_e2e hello.dart