[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