blob: b42effc664df12a8c985f5d2b1b35129d36abd54 [file] [log] [blame]
// Copyright (c) 2024, 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.
import 'dart:io';
import '../tool/_fasta/entry_points.dart' show compilePlatformEntryPoint;
import 'coverage_helper.dart';
Future<void> main(List<String> arguments) async {
Uri? coverageUri;
for (String argument in arguments) {
if (argument.startsWith("--coverage=")) {
coverageUri = Uri.base
.resolveUri(Uri.file(argument.substring("--coverage=".length)));
} else {
throw "Unsupported argument: $argument";
}
}
if (coverageUri == null) {
throw "Need --coverage=<dir>/ argument";
}
Directory tmp =
Directory.systemTemp.createTempSync("compile_platform_coverage");
String outlinePath = tmp.uri.resolve("vm_outline_strong.dill").toFilePath();
String platformPath = tmp.uri.resolve("vm_platform_strong.dill").toFilePath();
await compilePlatformEntryPoint([
"dart:core",
"-Ddart.vm.product=false",
"-Ddart.isVM=true",
"--nnbd-agnostic",
"--single-root-scheme=org-dartlang-sdk",
"--single-root-base=.",
"org-dartlang-sdk:///sdk/lib/libraries.json",
outlinePath,
platformPath,
outlinePath,
]);
tmp.deleteSync(recursive: true);
const String displayName = "compile platform";
File f = new File.fromUri(coverageUri.resolve("$displayName.coverage"));
// Force compiling seems to add something like 1 second to the collection
// time, but we get rid of uncompiled functions so it seems to be worth it.
(await collectCoverage(displayName: displayName, forceCompile: true))
?.writeToFile(f);
}