Version 2.18.0-177.0.dev
Merge commit '6970e0907bf2cabe0d3e5da0846616d3ce972471' into 'dev'
diff --git a/pkg/dart2wasm/lib/dispatch_table.dart b/pkg/dart2wasm/lib/dispatch_table.dart
index f257241..06c6347 100644
--- a/pkg/dart2wasm/lib/dispatch_table.dart
+++ b/pkg/dart2wasm/lib/dispatch_table.dart
@@ -294,7 +294,7 @@
void output() {
w.Module m = translator.m;
- w.Table wasmTable = m.addTable(table.length);
+ w.DefinedTable wasmTable = m.addTable(w.RefType.func(), table.length);
for (int i = 0; i < table.length; i++) {
Reference? target = table[i];
if (target != null) {
diff --git a/pkg/front_end/lib/src/api_unstable/bazel_worker.dart b/pkg/front_end/lib/src/api_unstable/bazel_worker.dart
index 217bb40..f30a919 100644
--- a/pkg/front_end/lib/src/api_unstable/bazel_worker.dart
+++ b/pkg/front_end/lib/src/api_unstable/bazel_worker.dart
@@ -60,9 +60,9 @@
Future<InitializedCompilerState> initializeIncrementalCompiler(
InitializedCompilerState? oldState,
Set<String> tags,
- Uri sdkSummary,
- Uri packagesFile,
- Uri librariesSpecificationUri,
+ Uri? sdkSummary,
+ Uri? packagesFile,
+ Uri? librariesSpecificationUri,
List<Uri> additionalDills,
Map<Uri, List<int>> workerInputDigests,
Target target,
@@ -100,9 +100,9 @@
InitializedCompilerState initializeCompiler(
InitializedCompilerState? oldState,
- Uri sdkSummary,
- Uri librariesSpecificationUri,
- Uri packagesFile,
+ Uri? sdkSummary,
+ Uri? librariesSpecificationUri,
+ Uri? packagesFile,
List<Uri> additionalDills,
Target target,
FileSystem fileSystem,
diff --git a/pkg/front_end/lib/src/api_unstable/modular_incremental_compilation.dart b/pkg/front_end/lib/src/api_unstable/modular_incremental_compilation.dart
index 346a4ae..88b68de 100644
--- a/pkg/front_end/lib/src/api_unstable/modular_incremental_compilation.dart
+++ b/pkg/front_end/lib/src/api_unstable/modular_incremental_compilation.dart
@@ -40,9 +40,9 @@
InitializedCompilerState? oldState,
Set<String> tags,
List<Component> outputLoadedAdditionalDills,
- Uri sdkSummary,
- Uri packagesFile,
- Uri librariesSpecificationUri,
+ Uri? sdkSummary,
+ Uri? packagesFile,
+ Uri? librariesSpecificationUri,
List<Uri> additionalDills,
Map<Uri, List<int>> workerInputDigests,
Target target,
@@ -59,8 +59,9 @@
bool isRetry = false;
while (true) {
try {
- final List<int>? sdkDigest = workerInputDigests[sdkSummary];
- if (sdkDigest == null) {
+ final List<int>? sdkDigest =
+ sdkSummary == null ? null : workerInputDigests[sdkSummary];
+ if (sdkDigest == null && sdkSummary != null) {
throw new StateError("Expected to get digest for $sdkSummary");
}
@@ -69,7 +70,8 @@
Map<Uri, Uri> workerInputCacheLibs =
oldState?.workerInputCacheLibs ?? new Map<Uri, Uri>();
- WorkerInputComponent? cachedSdkInput = workerInputCache[sdkSummary];
+ WorkerInputComponent? cachedSdkInput =
+ sdkSummary == null ? null : workerInputCache[sdkSummary];
IncrementalCompiler incrementalCompiler;
CompilerOptions options;
@@ -84,8 +86,9 @@
explicitExperimentalFlags) ||
!equalMaps(oldState.options.environmentDefines, environmentDefines) ||
!equalSets(oldState.tags, tags) ||
- cachedSdkInput == null ||
- !digestsEqual(cachedSdkInput.digest, sdkDigest)) {
+ (sdkSummary != null &&
+ (cachedSdkInput == null ||
+ !digestsEqual(cachedSdkInput.digest, sdkDigest)))) {
// No - or immediately not correct - previous state.
// We'll load a new sdk, anything loaded already will have a wrong root.
workerInputCache.clear();
@@ -107,28 +110,30 @@
..nnbdMode = nnbdMode;
processedOpts = new ProcessedOptions(options: options);
- cachedSdkInput = new WorkerInputComponent(
- sdkDigest, (await processedOpts.loadSdkSummary(null))!);
- workerInputCache[sdkSummary] = cachedSdkInput;
- for (Library lib in cachedSdkInput.component.libraries) {
- if (workerInputCacheLibs.containsKey(lib.importUri)) {
- throw new StateError("Duplicate sources in sdk.");
+ if (sdkSummary != null && sdkDigest != null) {
+ cachedSdkInput = new WorkerInputComponent(
+ sdkDigest, (await processedOpts.loadSdkSummary(null))!);
+ workerInputCache[sdkSummary] = cachedSdkInput;
+ for (Library lib in cachedSdkInput.component.libraries) {
+ if (workerInputCacheLibs.containsKey(lib.importUri)) {
+ throw new StateError("Duplicate sources in sdk.");
+ }
+ workerInputCacheLibs[lib.importUri] = sdkSummary;
}
- workerInputCacheLibs[lib.importUri] = sdkSummary;
}
incrementalCompiler = new IncrementalCompiler.fromComponent(
new CompilerContext(processedOpts),
- cachedSdkInput.component,
+ cachedSdkInput?.component,
outlineOnly);
} else {
options = oldState.options;
processedOpts = oldState.processedOpts;
- Component sdkComponent = cachedSdkInput.component;
+ Component? sdkComponent = cachedSdkInput?.component;
// Make sure the canonical name root knows about the sdk - otherwise we
// won't be able to link to it when loading more outlines.
- sdkComponent.adoptChildren();
+ sdkComponent?.adoptChildren();
// TODO(jensj): This is - at least currently - necessary,
// although it's not entirely obvious why.
@@ -149,7 +154,7 @@
}
// Then read all the input summary components.
- CanonicalName nameRoot = cachedSdkInput.component.root;
+ CanonicalName? nameRoot = cachedSdkInput?.component.root;
Map<Uri, Uri>? libraryToInputDill;
if (trackNeededDillLibraries) {
libraryToInputDill = new Map<Uri, Uri>();
diff --git a/pkg/frontend_server/lib/compute_kernel.dart b/pkg/frontend_server/lib/compute_kernel.dart
index 2c70e9d..918c891 100644
--- a/pkg/frontend_server/lib/compute_kernel.dart
+++ b/pkg/frontend_server/lib/compute_kernel.dart
@@ -2,8 +2,6 @@
// 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.
-// @dart = 2.8
-
/// A library to invoke the CFE to compute kernel summary files.
///
/// Used by `utils/bazel/kernel_worker.dart`.
@@ -119,7 +117,7 @@
class ComputeKernelResult {
final bool succeeded;
- final fe.InitializedCompilerState previousState;
+ final fe.InitializedCompilerState? previousState;
ComputeKernelResult(this.succeeded, this.previousState);
}
@@ -134,9 +132,9 @@
/// Returns whether or not the summary was successfully output.
Future<ComputeKernelResult> computeKernel(List<String> args,
{bool isWorker: false,
- StringBuffer outputBuffer,
- Map<Uri, List<int>> inputDigests,
- fe.InitializedCompilerState previousState}) async {
+ StringBuffer? outputBuffer,
+ Map<Uri, List<int>>? inputDigests,
+ fe.InitializedCompilerState? previousState}) async {
inputDigests ??= <Uri, List<int>>{};
dynamic out = outputBuffer ?? stderr;
bool succeeded = true;
@@ -172,7 +170,7 @@
// TODO(sigmund,jakemac): make target mandatory. We allow null to be backwards
// compatible while we migrate existing clients of this tool.
var targetName =
- (parsedArgs['target'] as String) ?? (summaryOnly ? 'ddc' : 'vm');
+ (parsedArgs['target'] as String?) ?? (summaryOnly ? 'ddc' : 'vm');
var targetFlags = new TargetFlags(
trackWidgetCreation: trackWidgetCreation,
enableNullSafety: nnbdMode == fe.NnbdMode.Strong);
@@ -225,6 +223,7 @@
break;
default:
out.writeln('error: unsupported target: $targetName');
+ return ComputeKernelResult(false, previousState);
}
List<Uri> linkedInputs =
@@ -239,6 +238,7 @@
var environmentDefines = _parseEnvironmentDefines(parsedArgs['define']);
var verbose = parsedArgs['verbose'] as bool;
var verbosity = fe.Verbosity.parseArgument(parsedArgs['verbosity']);
+ Uri? sdkSummaryUri = toUriNullable(parsedArgs['dart-sdk-summary']);
if (parsedArgs['use-incremental-compiler']) {
usingIncrementalCompiler = true;
@@ -248,7 +248,9 @@
// fake input digests).
if (!isWorker && inputDigests.isEmpty) {
previousState = null;
- inputDigests[toUri(parsedArgs['dart-sdk-summary'])] = const [0];
+ if (sdkSummaryUri != null) {
+ inputDigests[sdkSummaryUri] = const [0];
+ }
for (Uri uri in summaryInputs) {
inputDigests[uri] = const [0];
}
@@ -265,9 +267,9 @@
"multiRootScheme=${fileSystem.markerScheme}",
"multiRootRoots=${fileSystem.roots}",
},
- toUri(parsedArgs['dart-sdk-summary']),
- toUri(parsedArgs['packages-file']),
- toUri(parsedArgs['libraries-file']),
+ sdkSummaryUri,
+ toUriNullable(parsedArgs['packages-file']),
+ toUriNullable(parsedArgs['libraries-file']),
[...summaryInputs, ...linkedInputs],
inputDigests,
target,
@@ -282,9 +284,9 @@
state = fe.initializeCompiler(
// TODO(sigmund): pass an old state once we can make use of it.
null,
- toUri(parsedArgs['dart-sdk-summary']),
- toUri(parsedArgs['libraries-file']),
- toUri(parsedArgs['packages-file']),
+ sdkSummaryUri,
+ toUriNullable(parsedArgs['libraries-file']),
+ toUriNullable(parsedArgs['packages-file']),
[...summaryInputs, ...linkedInputs],
target,
fileSystem,
@@ -360,12 +362,12 @@
}
}
- List<int> kernel;
+ List<int>? kernel;
bool wroteUsedDills = false;
if (usingIncrementalCompiler) {
state.options.onDiagnostic = onDiagnostic;
IncrementalCompilerResult incrementalCompilerResult =
- await state.incrementalCompiler.computeDelta(
+ await state.incrementalCompiler!.computeDelta(
entryPoints: sources,
fullComponent: true,
trackNeededDillLibraries: recordUsedInputs);
@@ -373,9 +375,9 @@
if (recordUsedInputs) {
Set<Uri> usedOutlines = {};
- for (Library lib in incrementalCompilerResult.neededDillLibraries) {
+ for (Library lib in incrementalCompilerResult.neededDillLibraries!) {
if (lib.importUri.isScheme("dart")) continue;
- Uri uri = state.libraryToInputDill[lib.importUri];
+ Uri? uri = state.libraryToInputDill![lib.importUri];
if (uri == null) {
throw new StateError("Library ${lib.importUri} was recorded as used, "
"but was not in the list of known libraries.");
@@ -388,7 +390,7 @@
wroteUsedDills = true;
}
- kernel = await state.incrementalCompiler.context.runInContext((_) {
+ kernel = await state.incrementalCompiler!.context.runInContext((_) {
if (summaryOnly) {
incrementalComponent.uriToSource.clear();
incrementalComponent.problemsAsJson = null;
@@ -412,13 +414,15 @@
kernel = await fe.compileSummary(state, sources, onDiagnostic,
includeOffsets: false);
} else {
- Component component = await fe
+ Component? component = await fe
.compileComponent(state, sources, onDiagnostic, buildSummary: summary);
- kernel = fe.serializeComponent(component,
- filter: excludeNonSources
- ? (library) => sources.contains(library.importUri)
- : null,
- includeOffsets: true);
+ if (component != null) {
+ kernel = fe.serializeComponent(component,
+ filter: excludeNonSources
+ ? (library) => sources.contains(library.importUri)
+ : null,
+ includeOffsets: true);
+ }
}
state.options.onDiagnostic = null; // See http://dartbug.com/36983.
@@ -467,8 +471,12 @@
: super(targetFlags);
}
-Uri toUri(String uriString) {
+Uri? toUriNullable(String? uriString) {
if (uriString == null) return null;
+ return toUri(uriString);
+}
+
+Uri toUri(String uriString) {
// Windows-style paths use '\', so convert them to '/' in case they've been
// concatenated with Unix-style paths.
return Uri.base.resolve(uriString.replaceAll("\\", "/"));
diff --git a/pkg/frontend_server/lib/src/strong_components.dart b/pkg/frontend_server/lib/src/strong_components.dart
index 0711f2d..a436b7c 100644
--- a/pkg/frontend_server/lib/src/strong_components.dart
+++ b/pkg/frontend_server/lib/src/strong_components.dart
@@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// @dart = 2.9
import 'package:kernel/ast.dart';
import 'package:kernel/util/graph.dart';
@@ -45,7 +44,7 @@
final Uri mainUri;
/// The filesystem instance for resolving files.
- final FileSystem fileSystem;
+ final FileSystem? fileSystem;
/// The set of libraries for each module URI.
///
@@ -68,10 +67,13 @@
}
// If we don't have a file uri, just use the first library in the
// component.
- Library entrypoint = component.libraries.firstWhere(
- (Library library) =>
- library.fileUri == mainUri || library.importUri == mainUri,
- orElse: () => null);
+ Library? entrypoint;
+ for (Library library in component.libraries) {
+ if (library.fileUri == mainUri || library.importUri == mainUri) {
+ entrypoint = library;
+ break;
+ }
+ }
if (entrypoint == null) {
throw Exception('Could not find entrypoint ${mainUri} in Component.');
diff --git a/pkg/frontend_server/test/src/strong_components_test.dart b/pkg/frontend_server/test/src/strong_components_test.dart
index 2281e82..9bb6596 100644
--- a/pkg/frontend_server/test/src/strong_components_test.dart
+++ b/pkg/frontend_server/test/src/strong_components_test.dart
@@ -2,7 +2,6 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-// @dart = 2.9
import 'package:frontend_server/src/strong_components.dart';
import 'package:kernel/ast.dart';
import 'package:test/test.dart';
diff --git a/pkg/vm_service/test/async_single_step_exception_test.dart b/pkg/vm_service/test/async_single_step_exception_test.dart
index 3a093de..31f5394 100644
--- a/pkg/vm_service/test/async_single_step_exception_test.dart
+++ b/pkg/vm_service/test/async_single_step_exception_test.dart
@@ -1,20 +1,18 @@
// Copyright (c) 2019, 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.
-//
-// VMOptions=--lazy-async-stacks
import 'dart:developer';
import 'common/service_test_common.dart';
import 'common/test_helper.dart';
-const LINE_A = 20;
-const LINE_B = 21;
-const LINE_C = 26;
-const LINE_D = 28;
-const LINE_E = 31;
-const LINE_F = 34;
-const LINE_G = 36;
+const LINE_A = 18;
+const LINE_B = 19;
+const LINE_C = 24;
+const LINE_D = 26;
+const LINE_E = 29;
+const LINE_F = 32;
+const LINE_G = 34;
helper() async {
print('helper'); // LINE_A.
diff --git a/pkg/vm_service/test/async_single_step_into_test.dart b/pkg/vm_service/test/async_single_step_into_test.dart
index 604e00b..e5f77f7 100644
--- a/pkg/vm_service/test/async_single_step_into_test.dart
+++ b/pkg/vm_service/test/async_single_step_into_test.dart
@@ -1,17 +1,15 @@
// Copyright (c) 2019, 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.
-//
-// VMOptions=--lazy-async-stacks
import 'dart:developer';
import 'common/service_test_common.dart';
import 'common/test_helper.dart';
-const LINE_A = 17;
-const LINE_B = 18;
-const LINE_C = 23;
-const LINE_D = 24;
+const LINE_A = 15;
+const LINE_B = 16;
+const LINE_C = 21;
+const LINE_D = 22;
helper() async {
print('helper'); // LINE_A.
diff --git a/pkg/vm_service/test/async_single_step_out_test.dart b/pkg/vm_service/test/async_single_step_out_test.dart
index 71f9517..c3da030 100644
--- a/pkg/vm_service/test/async_single_step_out_test.dart
+++ b/pkg/vm_service/test/async_single_step_out_test.dart
@@ -1,18 +1,16 @@
// Copyright (c) 2019, 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.
-//
-// VMOptions=--lazy-async-stacks
import 'dart:developer';
import 'common/service_test_common.dart';
import 'common/test_helper.dart';
-const LINE_A = 18;
-const LINE_B = 19;
-const LINE_C = 24;
-const LINE_D = 25;
-const LINE_E = 26;
+const LINE_A = 16;
+const LINE_B = 17;
+const LINE_C = 22;
+const LINE_D = 23;
+const LINE_E = 24;
helper() async {
print('helper'); // LINE_A.
diff --git a/pkg/vm_service/test/async_star_single_step_into_test.dart b/pkg/vm_service/test/async_star_single_step_into_test.dart
index be3eba7..e722bbb 100644
--- a/pkg/vm_service/test/async_star_single_step_into_test.dart
+++ b/pkg/vm_service/test/async_star_single_step_into_test.dart
@@ -1,20 +1,18 @@
// Copyright (c) 2019, 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.
-//
-// VMOptions=--lazy-async-stacks
import 'dart:developer';
import 'common/service_test_common.dart';
import 'common/test_helper.dart';
-const LINE_A = 20;
-const LINE_B = 21;
-const LINE_C = 25;
-const LINE_D = 29;
-const LINE_E = 35;
-const LINE_F = 36;
-const LINE_G = 27;
+const LINE_A = 18;
+const LINE_B = 19;
+const LINE_C = 23;
+const LINE_D = 27;
+const LINE_E = 33;
+const LINE_F = 34;
+const LINE_G = 25;
foobar() async* {
yield 1; // LINE_A.
diff --git a/pkg/vm_service/test/async_star_step_out_test.dart b/pkg/vm_service/test/async_star_step_out_test.dart
index 41d387f..b1eba2a 100644
--- a/pkg/vm_service/test/async_star_step_out_test.dart
+++ b/pkg/vm_service/test/async_star_step_out_test.dart
@@ -1,22 +1,20 @@
// Copyright (c) 2019, 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.
-//
-// VMOptions=--lazy-async-stacks
import 'dart:developer';
import 'common/service_test_common.dart';
import 'common/test_helper.dart';
-const LINE_A = 22;
-const LINE_B = 23;
-const LINE_C = 27;
-const LINE_D = 31;
-const LINE_E = 38;
-const LINE_F = 39;
-const LINE_G = 40;
-const LINE_H = 29;
-const LINE_I = 33;
+const LINE_A = 20;
+const LINE_B = 21;
+const LINE_C = 25;
+const LINE_D = 29;
+const LINE_E = 36;
+const LINE_F = 37;
+const LINE_G = 38;
+const LINE_H = 27;
+const LINE_I = 31;
foobar() async* {
yield 1; // LINE_A.
diff --git a/pkg/vm_service/test/async_step_out_test.dart b/pkg/vm_service/test/async_step_out_test.dart
index e08ae35..7f37fe6 100644
--- a/pkg/vm_service/test/async_step_out_test.dart
+++ b/pkg/vm_service/test/async_step_out_test.dart
@@ -1,19 +1,17 @@
// Copyright (c) 2019, 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.
-//
-// VMOptions=--lazy-async-stacks
import 'dart:developer';
import 'common/service_test_common.dart';
import 'common/test_helper.dart';
-const LINE_A = 19;
-const LINE_B = 20;
-const LINE_C = 21;
-const LINE_D = 26;
-const LINE_E = 27;
-const LINE_F = 28;
+const LINE_A = 17;
+const LINE_B = 18;
+const LINE_C = 19;
+const LINE_D = 24;
+const LINE_E = 25;
+const LINE_F = 26;
helper() async {
await null; // LINE_A.
diff --git a/pkg/vm_service/test/awaiter_async_stack_contents_2_test.dart b/pkg/vm_service/test/awaiter_async_stack_contents_2_test.dart
index 5cd7443..f5fb8d0 100644
--- a/pkg/vm_service/test/awaiter_async_stack_contents_2_test.dart
+++ b/pkg/vm_service/test/awaiter_async_stack_contents_2_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'package:test/test.dart';
diff --git a/pkg/vm_service/test/awaiter_async_stack_contents_test.dart b/pkg/vm_service/test/awaiter_async_stack_contents_test.dart
index ac8ab8c..497a9f8 100644
--- a/pkg/vm_service/test/awaiter_async_stack_contents_test.dart
+++ b/pkg/vm_service/test/awaiter_async_stack_contents_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'package:test/test.dart';
diff --git a/pkg/vm_service/test/causal_async_stack_contents_test.dart b/pkg/vm_service/test/causal_async_stack_contents_test.dart
index b28ece5..aad6986 100644
--- a/pkg/vm_service/test/causal_async_stack_contents_test.dart
+++ b/pkg/vm_service/test/causal_async_stack_contents_test.dart
@@ -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.
//
-// VMOptions=--lazy-async-stacks --verbose_debug
+// VMOptions=--verbose_debug
import 'dart:developer';
import 'package:test/test.dart';
diff --git a/pkg/vm_service/test/causal_async_stack_presence_test.dart b/pkg/vm_service/test/causal_async_stack_presence_test.dart
index 48bf16e..5eb2c46 100644
--- a/pkg/vm_service/test/causal_async_stack_presence_test.dart
+++ b/pkg/vm_service/test/causal_async_stack_presence_test.dart
@@ -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.
//
-// VMOptions=--lazy-async-stacks --verbose_debug
+// VMOptions=--verbose_debug
import 'dart:developer';
import 'package:test/test.dart';
diff --git a/pkg/vm_service/test/causal_async_star_stack_contents_test.dart b/pkg/vm_service/test/causal_async_star_stack_contents_test.dart
index 80f0a2d..3d0e892 100644
--- a/pkg/vm_service/test/causal_async_star_stack_contents_test.dart
+++ b/pkg/vm_service/test/causal_async_star_stack_contents_test.dart
@@ -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.
//
-// VMOptions=--lazy-async-stacks --verbose_debug
+// VMOptions=--verbose_debug
import 'dart:developer';
import 'package:test/test.dart';
diff --git a/pkg/vm_service/test/causal_async_star_stack_presence_test.dart b/pkg/vm_service/test/causal_async_star_stack_presence_test.dart
index 5ba0a7d..15dba5a 100644
--- a/pkg/vm_service/test/causal_async_star_stack_presence_test.dart
+++ b/pkg/vm_service/test/causal_async_star_stack_presence_test.dart
@@ -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.
//
-// VMOptions=--lazy-async-stacks --verbose_debug
+// VMOptions=--verbose_debug
import 'dart:developer';
import 'package:test/test.dart';
diff --git a/pkg/vm_service/test/common/test_helper.dart b/pkg/vm_service/test/common/test_helper.dart
index 9f46c4d..5363e31 100644
--- a/pkg/vm_service/test/common/test_helper.dart
+++ b/pkg/vm_service/test/common/test_helper.dart
@@ -17,7 +17,7 @@
export 'service_test_common.dart' show IsolateTest, VMTest;
/// The extra arguments to use
-const List<String> extraDebuggingArgs = ['--lazy-async-stacks'];
+const List<String> extraDebuggingArgs = [];
/// Will be set to the http address of the VM's service protocol before
/// any tests are invoked.
diff --git a/pkg/vm_service/test/eval_issue_49209_test.dart b/pkg/vm_service/test/eval_issue_49209_test.dart
new file mode 100644
index 0000000..a0bbd56
--- /dev/null
+++ b/pkg/vm_service/test/eval_issue_49209_test.dart
@@ -0,0 +1,49 @@
+// Copyright (c) 2022, 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:developer';
+import 'package:test/test.dart';
+import 'package:vm_service/vm_service.dart';
+import 'common/service_test_common.dart';
+import 'common/test_helper.dart';
+
+void testFunction() {
+ final a = A<C>();
+ print(a.runtimeType);
+ debugger();
+}
+
+class A<T> {
+ A();
+}
+
+class B<T> {
+ final T data;
+ B(this.data);
+}
+
+class C extends B<C> {
+ C(C data) : super(data);
+}
+
+var tests = <IsolateTest>[
+ hasStoppedAtBreakpoint,
+
+ // Evaluate against top frame.
+ (VmService service, IsolateRef isolateRef) async {
+ final isolateId = isolateRef.id!;
+ var topFrame = 0;
+ final dynamic result = await service.evaluateInFrame(
+ isolateId, topFrame, 'a.runtimeType.toString()');
+ print(result);
+ expect(result.valueAsString, equals("A<C>"));
+ },
+];
+
+main([args = const <String>[]]) => runIsolateTests(
+ args,
+ tests,
+ 'eval_issue_49209_test.dart',
+ testeeConcurrent: testFunction,
+ );
diff --git a/pkg/vm_service/test/get_stack_test.dart b/pkg/vm_service/test/get_stack_test.dart
index f1df2ba..d1b42d3 100644
--- a/pkg/vm_service/test/get_stack_test.dart
+++ b/pkg/vm_service/test/get_stack_test.dart
@@ -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.
-// VMOptions=--lazy-async-stacks --verbose_debug
+// VMOptions=--verbose_debug
import 'dart:developer';
@@ -95,7 +95,7 @@
(VmService service, IsolateRef isolateRef) async {
final result = await service.getStack(isolateRef.id!);
- expect(result.frames, hasLength(10));
+ expect(result.frames, hasLength(6));
expect(result.asyncCausalFrames, hasLength(26));
expect(result.awaiterFrames, hasLength(13));
@@ -105,10 +105,6 @@
[equals('Regular'), anything], // Internal mech. ..
[equals('Regular'), anything],
[equals('Regular'), anything],
- [equals('Regular'), anything],
- [equals('Regular'), anything],
- [equals('Regular'), anything],
- [equals('Regular'), anything],
[equals('Regular'), endsWith(' _RawReceivePortImpl._handleMessage')],
]);
diff --git a/pkg/wasm_builder/lib/src/module.dart b/pkg/wasm_builder/lib/src/module.dart
index f75618e..592b304 100644
--- a/pkg/wasm_builder/lib/src/module.dart
+++ b/pkg/wasm_builder/lib/src/module.dart
@@ -27,6 +27,7 @@
BaseFunction? startFunction = null;
bool anyFunctionsDefined = false;
+ bool anyTablesDefined = false;
bool anyMemoriesDefined = false;
bool anyGlobalsDefined = false;
bool dataReferencedFromGlobalInitializer = false;
@@ -48,6 +49,7 @@
/// All module imports (functions and globals).
Iterable<Import> get imports => functions
.whereType<Import>()
+ .followedBy(tables.whereType<Import>())
.followedBy(memories.whereType<Import>())
.followedBy(globals.whereType<Import>());
@@ -55,6 +57,9 @@
Iterable<DefinedFunction> get definedFunctions =>
functions.whereType<DefinedFunction>();
+ /// All tables defined in the module.
+ Iterable<DefinedTable> get definedTables => tables.whereType<DefinedTable>();
+
/// All memories defined in the module.
Iterable<DefinedMemory> get definedMemories =>
memories.whereType<DefinedMemory>();
@@ -123,8 +128,9 @@
}
/// Add a new table to the module.
- Table addTable(int minSize, [int? maxSize]) {
- final table = Table(tables.length, minSize, maxSize);
+ DefinedTable addTable(RefType type, int minSize, [int? maxSize]) {
+ anyTablesDefined = true;
+ final table = DefinedTable(tables.length, type, minSize, maxSize);
tables.add(table);
return table;
}
@@ -191,6 +197,22 @@
return function;
}
+ /// Import a table into the module.
+ ///
+ /// All imported tables must be specified before any tables are declared
+ /// using [Module.addTable].
+ ImportedTable importTable(
+ String module, String name, RefType type, int minSize,
+ [int? maxSize]) {
+ if (anyTablesDefined) {
+ throw "All table imports must be specified before any definitions.";
+ }
+ final table =
+ ImportedTable(module, name, tables.length, type, minSize, maxSize);
+ tables.add(table);
+ return table;
+ }
+
/// Import a memory into the module.
///
/// All imported memories must be specified before any memories are declared
@@ -233,6 +255,20 @@
_addExport(FunctionExport(name, function));
}
+ /// Export a table from the module.
+ ///
+ /// All exports must have unique names.
+ void exportTable(String name, Table table) {
+ _addExport(TableExport(name, table));
+ }
+
+ /// Export a memory from the module.
+ ///
+ /// All exports must have unique names.
+ void exportMemory(String name, Memory memory) {
+ _addExport(MemoryExport(name, memory));
+ }
+
/// Export a global variable from the module.
///
/// All exports must have unique names.
@@ -303,7 +339,7 @@
}
}
-/// An (imported or defined) Wasm function.
+/// An (imported or defined) function.
abstract class BaseFunction {
final int index;
final FunctionType type;
@@ -313,7 +349,7 @@
BaseFunction(this.index, this.type, this.functionName);
}
-/// A function defined in the module.
+/// A function defined in a module.
class DefinedFunction extends BaseFunction
with SerializerMixin
implements Serializable {
@@ -323,9 +359,8 @@
/// The body of the function.
late final Instructions body;
- DefinedFunction(Module module, int index, FunctionType type,
- [String? functionName])
- : super(index, type, functionName) {
+ DefinedFunction(Module module, super.index, super.type,
+ [super.functionName]) {
for (ValueType paramType in type.inputs) {
addLocal(paramType);
}
@@ -380,23 +415,18 @@
String toString() => "$index";
}
-/// A table in a module.
+/// An (imported or defined) table.
class Table implements Serializable {
final int index;
+ final RefType type;
final int minSize;
final int? maxSize;
- final List<BaseFunction?> elements;
- Table(this.index, this.minSize, this.maxSize)
- : elements = List.filled(minSize, null);
-
- void setElement(int index, BaseFunction function) {
- elements[index] = function;
- }
+ Table(this.index, this.type, this.minSize, this.maxSize);
@override
void serialize(Serializer s) {
- s.writeByte(0x70); // funcref
+ s.write(type);
if (maxSize == null) {
s.writeByte(0x00);
s.writeUnsigned(minSize);
@@ -408,7 +438,21 @@
}
}
-/// A memory in a module.
+/// A table defined in a module.
+class DefinedTable extends Table {
+ final List<BaseFunction?> elements;
+
+ DefinedTable(super.index, super.type, super.minSize, super.maxSize)
+ : elements = List.filled(minSize, null);
+
+ void setElement(int index, BaseFunction function) {
+ assert(type == RefType.func(),
+ "Elements are only supported for funcref tables");
+ elements[index] = function;
+ }
+}
+
+/// An (imported or defined) memory.
class Memory {
final int index;
final bool shared;
@@ -438,9 +482,9 @@
}
}
+/// A memory defined in a module.
class DefinedMemory extends Memory implements Serializable {
- DefinedMemory(int index, bool shared, int minSize, int? maxSize)
- : super(index, shared, minSize, maxSize);
+ DefinedMemory(super.index, super.shared, super.minSize, super.maxSize);
@override
void serialize(Serializer s) => _serializeLimits(s);
@@ -507,7 +551,7 @@
}
}
-/// An (imported or defined) global variable in a module.
+/// An (imported or defined) global variable.
abstract class Global {
final int index;
final GlobalType type;
@@ -518,14 +562,13 @@
String toString() => "$index";
}
-/// A global variable defined in the module.
+/// A global variable defined in a module.
class DefinedGlobal extends Global implements Serializable {
final Instructions initializer;
- DefinedGlobal(Module module, int index, GlobalType type)
+ DefinedGlobal(Module module, super.index, super.type)
: initializer =
- Instructions(module, [type.type], isGlobalInitializer: true),
- super(index, type);
+ Instructions(module, [type.type], isGlobalInitializer: true);
@override
void serialize(Serializer s) {
@@ -535,7 +578,7 @@
}
}
-/// Any import (function or global).
+/// Any import (function, table, memory or global).
abstract class Import implements Serializable {
String get module;
String get name;
@@ -546,9 +589,8 @@
final String module;
final String name;
- ImportedFunction(this.module, this.name, int index, FunctionType type,
- [String? functionName])
- : super(index, type, functionName);
+ ImportedFunction(this.module, this.name, super.index, super.type,
+ [super.functionName]);
@override
void serialize(Serializer s) {
@@ -562,14 +604,30 @@
String toString() => "$module.$name";
}
+/// An imported table.
+class ImportedTable extends Table implements Import {
+ final String module;
+ final String name;
+
+ ImportedTable(this.module, this.name, super.index, super.type, super.minSize,
+ super.maxSize);
+
+ @override
+ void serialize(Serializer s) {
+ s.writeName(module);
+ s.writeName(name);
+ s.writeByte(0x01);
+ super.serialize(s);
+ }
+}
+
/// An imported memory.
class ImportedMemory extends Memory implements Import {
final String module;
final String name;
- ImportedMemory(
- this.module, this.name, int index, bool shared, int minSize, int? maxSize)
- : super(index, shared, minSize, maxSize);
+ ImportedMemory(this.module, this.name, super.index, super.shared,
+ super.minSize, super.maxSize);
@override
void serialize(Serializer s) {
@@ -585,8 +643,7 @@
final String module;
final String name;
- ImportedGlobal(this.module, this.name, int index, GlobalType type)
- : super(index, type);
+ ImportedGlobal(this.module, this.name, super.index, super.type);
@override
void serialize(Serializer s) {
@@ -606,7 +663,7 @@
class FunctionExport extends Export {
final BaseFunction function;
- FunctionExport(String name, this.function) : super(name);
+ FunctionExport(super.name, this.function);
@override
void serialize(Serializer s) {
@@ -616,10 +673,36 @@
}
}
+class TableExport extends Export {
+ final Table table;
+
+ TableExport(super.name, this.table);
+
+ @override
+ void serialize(Serializer s) {
+ s.writeName(name);
+ s.writeByte(0x01);
+ s.writeUnsigned(table.index);
+ }
+}
+
+class MemoryExport extends Export {
+ final Memory memory;
+
+ MemoryExport(super.name, this.memory);
+
+ @override
+ void serialize(Serializer s) {
+ s.writeName(name);
+ s.writeByte(0x02);
+ s.writeUnsigned(memory.index);
+ }
+}
+
class GlobalExport extends Export {
final Global global;
- GlobalExport(String name, this.global) : super(name);
+ GlobalExport(super.name, this.global);
@override
void serialize(Serializer s) {
@@ -651,7 +734,7 @@
}
class TypeSection extends Section {
- TypeSection(Module module) : super(module);
+ TypeSection(super.module);
@override
int get id => 1;
@@ -669,7 +752,7 @@
}
class ImportSection extends Section {
- ImportSection(Module module) : super(module);
+ ImportSection(super.module);
@override
int get id => 2;
@@ -684,7 +767,7 @@
}
class FunctionSection extends Section {
- FunctionSection(Module module) : super(module);
+ FunctionSection(super.module);
@override
int get id => 3;
@@ -702,22 +785,22 @@
}
class TableSection extends Section {
- TableSection(Module module) : super(module);
+ TableSection(super.module);
@override
int get id => 4;
@override
- bool get isNotEmpty => module.tables.isNotEmpty;
+ bool get isNotEmpty => module.definedTables.isNotEmpty;
@override
void serializeContents() {
- writeList(module.tables);
+ writeList(module.definedTables.toList());
}
}
class MemorySection extends Section {
- MemorySection(Module module) : super(module);
+ MemorySection(super.module);
@override
int get id => 5;
@@ -732,7 +815,7 @@
}
class TagSection extends Section {
- TagSection(Module module) : super(module);
+ TagSection(super.module);
@override
int get id => 13;
@@ -747,7 +830,7 @@
}
class GlobalSection extends Section {
- GlobalSection(Module module) : super(module);
+ GlobalSection(super.module);
@override
int get id => 6;
@@ -762,7 +845,7 @@
}
class ExportSection extends Section {
- ExportSection(Module module) : super(module);
+ ExportSection(super.module);
@override
int get id => 7;
@@ -777,7 +860,7 @@
}
class StartSection extends Section {
- StartSection(Module module) : super(module);
+ StartSection(super.module);
@override
int get id => 8;
@@ -800,10 +883,18 @@
@override
void serialize(Serializer s) {
- s.writeUnsigned(table.index);
+ if (table.index != 0) {
+ s.writeByte(0x02);
+ s.writeUnsigned(table.index);
+ } else {
+ s.writeByte(0x00);
+ }
s.writeByte(0x41); // i32.const
s.writeSigned(startIndex);
s.writeByte(0x0B); // end
+ if (table.index != 0) {
+ s.writeByte(0x00); // elemkind
+ }
s.writeUnsigned(entries.length);
for (var entry in entries) {
s.writeUnsigned(entry.index);
@@ -812,21 +903,21 @@
}
class ElementSection extends Section {
- ElementSection(Module module) : super(module);
+ ElementSection(super.module);
@override
int get id => 9;
@override
bool get isNotEmpty =>
- module.tables.any((table) => table.elements.any((e) => e != null));
+ module.definedTables.any((table) => table.elements.any((e) => e != null));
@override
void serializeContents() {
// Group nonempty element entries into contiguous stretches and serialize
// each stretch as an element.
List<_Element> elements = [];
- for (Table table in module.tables) {
+ for (DefinedTable table in module.definedTables) {
_Element? current = null;
for (int i = 0; i < table.elements.length; i++) {
BaseFunction? function = table.elements[i];
@@ -846,7 +937,7 @@
}
class DataCountSection extends Section {
- DataCountSection(Module module) : super(module);
+ DataCountSection(super.module);
@override
int get id => 12;
@@ -861,7 +952,7 @@
}
class CodeSection extends Section {
- CodeSection(Module module) : super(module);
+ CodeSection(super.module);
@override
int get id => 10;
@@ -876,7 +967,7 @@
}
class DataSection extends Section {
- DataSection(Module module) : super(module);
+ DataSection(super.module);
@override
int get id => 11;
@@ -891,14 +982,14 @@
}
abstract class CustomSection extends Section {
- CustomSection(Module module) : super(module);
+ CustomSection(super.module);
@override
int get id => 0;
}
class NameSection extends CustomSection {
- NameSection(Module module) : super(module);
+ NameSection(super.module);
@override
bool get isNotEmpty => module.functionNameCount > 0;
diff --git a/pkg/wasm_builder/lib/src/types.dart b/pkg/wasm_builder/lib/src/types.dart
index 84494d3..8ed1f68 100644
--- a/pkg/wasm_builder/lib/src/types.dart
+++ b/pkg/wasm_builder/lib/src/types.dart
@@ -415,8 +415,7 @@
final List<ValueType> inputs;
final List<ValueType> outputs;
- FunctionType(this.inputs, this.outputs, {HeapType? superType})
- : super(superType: superType);
+ FunctionType(this.inputs, this.outputs, {super.superType});
@override
bool isStructuralSubtypeOf(HeapType other) {
@@ -454,7 +453,7 @@
abstract class DataType extends DefType {
final String name;
- DataType(this.name, {HeapType? superType}) : super(superType: superType);
+ DataType(this.name, {super.superType});
@override
String toString() => name;
@@ -464,8 +463,7 @@
class StructType extends DataType {
final List<FieldType> fields = [];
- StructType(String name, {Iterable<FieldType>? fields, HeapType? superType})
- : super(name, superType: superType) {
+ StructType(super.name, {Iterable<FieldType>? fields, super.superType}) {
if (fields != null) this.fields.addAll(fields);
}
@@ -499,8 +497,7 @@
class ArrayType extends DataType {
late final FieldType elementType;
- ArrayType(String name, {FieldType? elementType, HeapType? superType})
- : super(name, superType: superType) {
+ ArrayType(super.name, {FieldType? elementType, super.superType}) {
if (elementType != null) this.elementType = elementType;
}
@@ -530,7 +527,7 @@
final T type;
final bool mutable;
- _WithMutability(this.type, this.mutable);
+ _WithMutability(this.type, {required this.mutable});
@override
void serialize(Serializer s) {
@@ -546,14 +543,14 @@
///
/// It consists of a type and a mutability.
class GlobalType extends _WithMutability<ValueType> {
- GlobalType(ValueType type, {bool mutable = true}) : super(type, mutable);
+ GlobalType(super.type, {super.mutable = true});
}
/// A type for a struct field or an array element.
///
/// It consists of a type and a mutability.
class FieldType extends _WithMutability<StorageType> {
- FieldType(StorageType type, {bool mutable = true}) : super(type, mutable);
+ FieldType(super.type, {super.mutable = true});
/// The `i8` storage type as a field type.
FieldType.i8({bool mutable: true}) : this(PackedType.i8, mutable: mutable);
diff --git a/pkg/wasm_builder/lib/wasm_builder.dart b/pkg/wasm_builder/lib/wasm_builder.dart
index 7dfeb68..7ad807b 100644
--- a/pkg/wasm_builder/lib/wasm_builder.dart
+++ b/pkg/wasm_builder/lib/wasm_builder.dart
@@ -7,10 +7,15 @@
DataSegment,
DefinedFunction,
DefinedGlobal,
+ DefinedMemory,
+ DefinedTable,
BaseFunction,
Global,
+ Import,
ImportedFunction,
ImportedGlobal,
+ ImportedMemory,
+ ImportedTable,
Local,
Memory,
Module,
diff --git a/pkg/wasm_builder/pubspec.yaml b/pkg/wasm_builder/pubspec.yaml
index a4286a4..3d59b5a 100644
--- a/pkg/wasm_builder/pubspec.yaml
+++ b/pkg/wasm_builder/pubspec.yaml
@@ -4,4 +4,4 @@
description: Generate binary Wasm modules
environment:
- sdk: '>=2.12.0'
+ sdk: '>=2.17.0'
diff --git a/runtime/bin/analyze_snapshot.cc b/runtime/bin/analyze_snapshot.cc
index 1eb4c14c..5a9011e 100644
--- a/runtime/bin/analyze_snapshot.cc
+++ b/runtime/bin/analyze_snapshot.cc
@@ -52,7 +52,6 @@
"following default flags: \n"
"--enable_mirrors=false \n"
"--background_compilation \n"
-"--lazy_async_stacks \n"
"--precompilation \n"
" \n"
"\n");
@@ -157,7 +156,6 @@
if (vm_options.count() == 0) {
vm_options.AddArgument("--enable_mirrors=false");
vm_options.AddArgument("--background_compilation");
- vm_options.AddArgument("--lazy_async_stacks");
vm_options.AddArgument("--precompilation");
}
diff --git a/runtime/lib/stacktrace.cc b/runtime/lib/stacktrace.cc
index da73ef8..af80ae5 100644
--- a/runtime/lib/stacktrace.cc
+++ b/runtime/lib/stacktrace.cc
@@ -34,8 +34,9 @@
return StackTrace::New(code_array, pc_offset_array);
}
-static StackTracePtr CurrentSyncStackTraceLazy(Thread* thread,
- intptr_t skip_frames = 1) {
+// Gets current stack trace for `thread`.
+static StackTracePtr CurrentStackTrace(Thread* thread,
+ intptr_t skip_frames = 1) {
Zone* zone = thread->zone();
const auto& code_array = GrowableObjectArray::ZoneHandle(
@@ -43,54 +44,19 @@
GrowableArray<uword> pc_offset_array;
// Collect the frames.
- StackTraceUtils::CollectFramesLazy(thread, code_array, &pc_offset_array,
- skip_frames);
+ StackTraceUtils::CollectFrames(thread, code_array, &pc_offset_array,
+ skip_frames);
return CreateStackTraceObject(zone, code_array, pc_offset_array);
}
-static StackTracePtr CurrentSyncStackTrace(Thread* thread,
- intptr_t skip_frames = 1) {
- Zone* zone = thread->zone();
- const Function& null_function = Function::ZoneHandle(zone);
-
- // Determine how big the stack trace is.
- const intptr_t stack_trace_length =
- StackTraceUtils::CountFrames(thread, skip_frames, null_function, nullptr);
-
- // Allocate once.
- const Array& code_array =
- Array::ZoneHandle(zone, Array::New(stack_trace_length));
- const TypedData& pc_offset_array = TypedData::ZoneHandle(
- zone, TypedData::New(kUintPtrCid, stack_trace_length));
-
- // Collect the frames.
- const intptr_t collected_frames_count = StackTraceUtils::CollectFrames(
- thread, code_array, pc_offset_array, 0, stack_trace_length, skip_frames);
-
- ASSERT(collected_frames_count == stack_trace_length);
-
- return StackTrace::New(code_array, pc_offset_array);
-}
-
-// Gets current stack trace for `thread`.
-static StackTracePtr CurrentStackTrace(Thread* thread,
- bool for_async_function,
- intptr_t skip_frames = 1) {
- if (FLAG_lazy_async_stacks) {
- return CurrentSyncStackTraceLazy(thread, skip_frames);
- }
- // Return the synchronous stack trace.
- return CurrentSyncStackTrace(thread, skip_frames);
-}
-
StackTracePtr GetStackTraceForException() {
Thread* thread = Thread::Current();
- return CurrentStackTrace(thread, false, 0);
+ return CurrentStackTrace(thread, 0);
}
DEFINE_NATIVE_ENTRY(StackTrace_current, 0, 0) {
- return CurrentStackTrace(thread, false);
+ return CurrentStackTrace(thread);
}
static void AppendFrames(const GrowableObjectArray& code_list,
diff --git a/runtime/observatory/tests/service/async_single_step_exception_test.dart b/runtime/observatory/tests/service/async_single_step_exception_test.dart
index 544ba6f..2d9d6fb 100644
--- a/runtime/observatory/tests/service/async_single_step_exception_test.dart
+++ b/runtime/observatory/tests/service/async_single_step_exception_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'service_test_common.dart';
diff --git a/runtime/observatory/tests/service/async_single_step_into_test.dart b/runtime/observatory/tests/service/async_single_step_into_test.dart
index 7477840..2685cac 100644
--- a/runtime/observatory/tests/service/async_single_step_into_test.dart
+++ b/runtime/observatory/tests/service/async_single_step_into_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'service_test_common.dart';
diff --git a/runtime/observatory/tests/service/async_single_step_out_test.dart b/runtime/observatory/tests/service/async_single_step_out_test.dart
index e93c274..bf09b4d 100644
--- a/runtime/observatory/tests/service/async_single_step_out_test.dart
+++ b/runtime/observatory/tests/service/async_single_step_out_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'service_test_common.dart';
diff --git a/runtime/observatory/tests/service/async_star_single_step_into_test.dart b/runtime/observatory/tests/service/async_star_single_step_into_test.dart
index ac8e6ba..1a3c2ad 100644
--- a/runtime/observatory/tests/service/async_star_single_step_into_test.dart
+++ b/runtime/observatory/tests/service/async_star_single_step_into_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'service_test_common.dart';
diff --git a/runtime/observatory/tests/service/async_star_step_out_test.dart b/runtime/observatory/tests/service/async_star_step_out_test.dart
index 6e73174..f408caa 100644
--- a/runtime/observatory/tests/service/async_star_step_out_test.dart
+++ b/runtime/observatory/tests/service/async_star_step_out_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'service_test_common.dart';
diff --git a/runtime/observatory/tests/service/async_step_out_test.dart b/runtime/observatory/tests/service/async_step_out_test.dart
index 4cce826..5359d1e 100644
--- a/runtime/observatory/tests/service/async_step_out_test.dart
+++ b/runtime/observatory/tests/service/async_step_out_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'service_test_common.dart';
diff --git a/runtime/observatory/tests/service/awaiter_async_stack_contents_2_test.dart b/runtime/observatory/tests/service/awaiter_async_stack_contents_2_test.dart
index b2d2165..8016216 100644
--- a/runtime/observatory/tests/service/awaiter_async_stack_contents_2_test.dart
+++ b/runtime/observatory/tests/service/awaiter_async_stack_contents_2_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'package:observatory/models.dart' as M;
diff --git a/runtime/observatory/tests/service/awaiter_async_stack_contents_test.dart b/runtime/observatory/tests/service/awaiter_async_stack_contents_test.dart
index 77eeed2..e3ea09c 100644
--- a/runtime/observatory/tests/service/awaiter_async_stack_contents_test.dart
+++ b/runtime/observatory/tests/service/awaiter_async_stack_contents_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'package:observatory/models.dart' as M;
diff --git a/runtime/observatory/tests/service/causal_async_stack_contents_test.dart b/runtime/observatory/tests/service/causal_async_stack_contents_test.dart
index 3e4a8eb..6401df0 100644
--- a/runtime/observatory/tests/service/causal_async_stack_contents_test.dart
+++ b/runtime/observatory/tests/service/causal_async_stack_contents_test.dart
@@ -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.
//
-// VMOptions=--lazy-async-stacks --verbose_debug
+// VMOptions=--verbose_debug
import 'dart:developer';
import 'package:observatory/models.dart' as M;
diff --git a/runtime/observatory/tests/service/causal_async_stack_presence_test.dart b/runtime/observatory/tests/service/causal_async_stack_presence_test.dart
index 01331cd..008447e 100644
--- a/runtime/observatory/tests/service/causal_async_stack_presence_test.dart
+++ b/runtime/observatory/tests/service/causal_async_stack_presence_test.dart
@@ -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.
//
-// VMOptions=--lazy-async-stacks --verbose_debug
+// VMOptions=--verbose_debug
import 'dart:developer';
import 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/causal_async_star_stack_contents_test.dart b/runtime/observatory/tests/service/causal_async_star_stack_contents_test.dart
index 8d66a17a..d9f4a85 100644
--- a/runtime/observatory/tests/service/causal_async_star_stack_contents_test.dart
+++ b/runtime/observatory/tests/service/causal_async_star_stack_contents_test.dart
@@ -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.
//
-// VMOptions=--lazy-async-stacks --verbose_debug
+// VMOptions=--verbose_debug
import 'dart:developer';
import 'package:observatory/models.dart' as M;
diff --git a/runtime/observatory/tests/service/causal_async_star_stack_presence_test.dart b/runtime/observatory/tests/service/causal_async_star_stack_presence_test.dart
index 9b605cb..4015c42 100644
--- a/runtime/observatory/tests/service/causal_async_star_stack_presence_test.dart
+++ b/runtime/observatory/tests/service/causal_async_star_stack_presence_test.dart
@@ -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.
//
-// VMOptions=--lazy-async-stacks --verbose_debug
+// VMOptions=--verbose_debug
import 'dart:developer';
import 'package:observatory/service_io.dart';
diff --git a/runtime/observatory/tests/service/get_stack_limit_rpc_test.dart b/runtime/observatory/tests/service/get_stack_limit_rpc_test.dart
index b3e47e2..f8decf0 100644
--- a/runtime/observatory/tests/service/get_stack_limit_rpc_test.dart
+++ b/runtime/observatory/tests/service/get_stack_limit_rpc_test.dart
@@ -2,8 +2,6 @@
// 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.
-// VMOptions=--lazy-async-stacks
-
import 'dart:async';
import 'dart:developer';
@@ -53,7 +51,7 @@
var frames = stack['frames'];
var asyncFrames = stack['asyncCausalFrames'];
var awaiterFrames = stack['awaiterFrames'];
- expect(frames.length, greaterThanOrEqualTo(20));
+ expect(frames.length, greaterThanOrEqualTo(12));
expect(asyncFrames.length, greaterThan(frames.length));
expect(awaiterFrames.length, greaterThan(frames.length));
expect(stack['truncated'], false);
diff --git a/runtime/observatory/tests/service/next_through_simple_async_test.dart b/runtime/observatory/tests/service/next_through_simple_async_test.dart
index bc2c3d5..7985874 100644
--- a/runtime/observatory/tests/service/next_through_simple_async_test.dart
+++ b/runtime/observatory/tests/service/next_through_simple_async_test.dart
@@ -1,14 +1,12 @@
// Copyright (c) 2017, 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.
-//
-// VMOptions=--lazy-async-stacks
import 'test_helper.dart';
import 'service_test_common.dart';
import 'dart:io';
-const int LINE_A = 14;
+const int LINE_A = 12;
const String file = "next_through_simple_async_test.dart";
code() async { // LINE_A
diff --git a/runtime/observatory/tests/service/next_through_simple_async_with_returns_test.dart b/runtime/observatory/tests/service/next_through_simple_async_with_returns_test.dart
index 9a3f234..f402762 100644
--- a/runtime/observatory/tests/service/next_through_simple_async_with_returns_test.dart
+++ b/runtime/observatory/tests/service/next_through_simple_async_with_returns_test.dart
@@ -1,14 +1,12 @@
// Copyright (c) 2017, 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.
-//
-// VMOptions=--lazy-async-stacks
import 'test_helper.dart';
import 'service_test_common.dart';
import 'dart:io';
-const int LINE_A = 14;
+const int LINE_A = 12;
const String file = "next_through_simple_async_with_returns_test.dart";
code() async { // LINE_A
diff --git a/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions2_test.dart b/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions2_test.dart
index 67f6901..4d06f0b 100644
--- a/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions2_test.dart
+++ b/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions2_test.dart
@@ -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.
//
-// VMOptions=--async_debugger --lazy-async-stacks
-// VMOptions=--async_debugger --lazy-async-stacks --optimization-counter-threshold=5
+// VMOptions=--async_debugger
+// VMOptions=--async_debugger --optimization-counter-threshold=5
import 'package:observatory/service_io.dart';
import 'package:observatory/models.dart' as M;
diff --git a/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions_test.dart b/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions_test.dart
index fe636dd..1770b56 100644
--- a/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions_test.dart
+++ b/runtime/observatory/tests/service/pause_on_unhandled_async_exceptions_test.dart
@@ -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.
//
-// VMOptions=--async_debugger --lazy-async-stacks
+// VMOptions=--async_debugger
import 'package:observatory/service_io.dart';
import 'package:observatory/models.dart' as M;
diff --git a/runtime/observatory/tests/service/test_helper.dart b/runtime/observatory/tests/service/test_helper.dart
index bf6ce73..02a6b0a 100644
--- a/runtime/observatory/tests/service/test_helper.dart
+++ b/runtime/observatory/tests/service/test_helper.dart
@@ -23,7 +23,7 @@
const String.fromEnvironment('SERVICE_RESPONSE_SIZES_DIR');
/// The extra arguments to use
-const List<String> extraDebuggingArgs = ['--lazy-async-stacks'];
+const List<String> extraDebuggingArgs = [];
/// Will be set to the http address of the VM's service protocol before
/// any tests are invoked.
diff --git a/runtime/observatory_2/tests/service_2/async_single_step_exception_test.dart b/runtime/observatory_2/tests/service_2/async_single_step_exception_test.dart
index 9982e0c..fcfdbc9 100644
--- a/runtime/observatory_2/tests/service_2/async_single_step_exception_test.dart
+++ b/runtime/observatory_2/tests/service_2/async_single_step_exception_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'service_test_common.dart';
diff --git a/runtime/observatory_2/tests/service_2/async_single_step_into_test.dart b/runtime/observatory_2/tests/service_2/async_single_step_into_test.dart
index 7477840..2685cac 100644
--- a/runtime/observatory_2/tests/service_2/async_single_step_into_test.dart
+++ b/runtime/observatory_2/tests/service_2/async_single_step_into_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'service_test_common.dart';
diff --git a/runtime/observatory_2/tests/service_2/async_single_step_out_test.dart b/runtime/observatory_2/tests/service_2/async_single_step_out_test.dart
index e93c274..bf09b4d 100644
--- a/runtime/observatory_2/tests/service_2/async_single_step_out_test.dart
+++ b/runtime/observatory_2/tests/service_2/async_single_step_out_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'service_test_common.dart';
diff --git a/runtime/observatory_2/tests/service_2/async_star_single_step_into_test.dart b/runtime/observatory_2/tests/service_2/async_star_single_step_into_test.dart
index ac8e6ba..1a3c2ad 100644
--- a/runtime/observatory_2/tests/service_2/async_star_single_step_into_test.dart
+++ b/runtime/observatory_2/tests/service_2/async_star_single_step_into_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'service_test_common.dart';
diff --git a/runtime/observatory_2/tests/service_2/async_star_step_out_test.dart b/runtime/observatory_2/tests/service_2/async_star_step_out_test.dart
index 6e73174..f408caa 100644
--- a/runtime/observatory_2/tests/service_2/async_star_step_out_test.dart
+++ b/runtime/observatory_2/tests/service_2/async_star_step_out_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'service_test_common.dart';
diff --git a/runtime/observatory_2/tests/service_2/async_step_out_test.dart b/runtime/observatory_2/tests/service_2/async_step_out_test.dart
index 4cce826..5359d1e 100644
--- a/runtime/observatory_2/tests/service_2/async_step_out_test.dart
+++ b/runtime/observatory_2/tests/service_2/async_step_out_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'service_test_common.dart';
diff --git a/runtime/observatory_2/tests/service_2/awaiter_async_stack_contents_2_test.dart b/runtime/observatory_2/tests/service_2/awaiter_async_stack_contents_2_test.dart
index 0df05fd..55ccaa1 100644
--- a/runtime/observatory_2/tests/service_2/awaiter_async_stack_contents_2_test.dart
+++ b/runtime/observatory_2/tests/service_2/awaiter_async_stack_contents_2_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'package:observatory_2/models.dart' as M;
diff --git a/runtime/observatory_2/tests/service_2/awaiter_async_stack_contents_test.dart b/runtime/observatory_2/tests/service_2/awaiter_async_stack_contents_test.dart
index 9e0f8f3..792d7d4 100644
--- a/runtime/observatory_2/tests/service_2/awaiter_async_stack_contents_test.dart
+++ b/runtime/observatory_2/tests/service_2/awaiter_async_stack_contents_test.dart
@@ -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.
//
-// VMOptions=--async-debugger --verbose-debug --lazy-async-stacks
+// VMOptions=--async-debugger --verbose-debug
import 'dart:developer';
import 'package:observatory_2/models.dart' as M;
diff --git a/runtime/observatory_2/tests/service_2/causal_async_stack_contents_test.dart b/runtime/observatory_2/tests/service_2/causal_async_stack_contents_test.dart
index 7523c0f..c80155c 100644
--- a/runtime/observatory_2/tests/service_2/causal_async_stack_contents_test.dart
+++ b/runtime/observatory_2/tests/service_2/causal_async_stack_contents_test.dart
@@ -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.
//
-// VMOptions=--lazy-async-stacks --verbose_debug
+// VMOptions=--verbose_debug
import 'dart:developer';
import 'package:observatory_2/models.dart' as M;
diff --git a/runtime/observatory_2/tests/service_2/causal_async_stack_presence_test.dart b/runtime/observatory_2/tests/service_2/causal_async_stack_presence_test.dart
index cd9ef6a..71cc1c8 100644
--- a/runtime/observatory_2/tests/service_2/causal_async_stack_presence_test.dart
+++ b/runtime/observatory_2/tests/service_2/causal_async_stack_presence_test.dart
@@ -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.
//
-// VMOptions=--lazy-async-stacks --verbose_debug
+// VMOptions=--verbose_debug
import 'dart:developer';
import 'package:observatory_2/service_io.dart';
diff --git a/runtime/observatory_2/tests/service_2/causal_async_star_stack_contents_test.dart b/runtime/observatory_2/tests/service_2/causal_async_star_stack_contents_test.dart
index 5044d57..5f715f8 100644
--- a/runtime/observatory_2/tests/service_2/causal_async_star_stack_contents_test.dart
+++ b/runtime/observatory_2/tests/service_2/causal_async_star_stack_contents_test.dart
@@ -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.
//
-// VMOptions=--lazy-async-stacks --verbose_debug
+// VMOptions=--verbose_debug
import 'dart:developer';
import 'package:observatory_2/models.dart' as M;
diff --git a/runtime/observatory_2/tests/service_2/causal_async_star_stack_presence_test.dart b/runtime/observatory_2/tests/service_2/causal_async_star_stack_presence_test.dart
index 8acf40d..fa3eb74 100644
--- a/runtime/observatory_2/tests/service_2/causal_async_star_stack_presence_test.dart
+++ b/runtime/observatory_2/tests/service_2/causal_async_star_stack_presence_test.dart
@@ -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.
//
-// VMOptions=--lazy-async-stacks --verbose_debug
+// VMOptions=--verbose_debug
import 'dart:developer';
import 'package:observatory_2/service_io.dart';
diff --git a/runtime/observatory_2/tests/service_2/get_stack_limit_rpc_test.dart b/runtime/observatory_2/tests/service_2/get_stack_limit_rpc_test.dart
index dc9f253..8570a28 100644
--- a/runtime/observatory_2/tests/service_2/get_stack_limit_rpc_test.dart
+++ b/runtime/observatory_2/tests/service_2/get_stack_limit_rpc_test.dart
@@ -2,8 +2,6 @@
// 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.
-// VMOptions=--lazy-async-stacks
-
import 'dart:async';
import 'dart:developer';
@@ -53,7 +51,7 @@
var frames = stack['frames'];
var asyncFrames = stack['asyncCausalFrames'];
var awaiterFrames = stack['awaiterFrames'];
- expect(frames.length, greaterThanOrEqualTo(20));
+ expect(frames.length, greaterThanOrEqualTo(12));
expect(asyncFrames.length, greaterThan(frames.length));
expect(awaiterFrames.length, greaterThan(frames.length));
expect(stack['truncated'], false);
diff --git a/runtime/observatory_2/tests/service_2/next_through_simple_async_test.dart b/runtime/observatory_2/tests/service_2/next_through_simple_async_test.dart
index bc2c3d5..7985874 100644
--- a/runtime/observatory_2/tests/service_2/next_through_simple_async_test.dart
+++ b/runtime/observatory_2/tests/service_2/next_through_simple_async_test.dart
@@ -1,14 +1,12 @@
// Copyright (c) 2017, 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.
-//
-// VMOptions=--lazy-async-stacks
import 'test_helper.dart';
import 'service_test_common.dart';
import 'dart:io';
-const int LINE_A = 14;
+const int LINE_A = 12;
const String file = "next_through_simple_async_test.dart";
code() async { // LINE_A
diff --git a/runtime/observatory_2/tests/service_2/next_through_simple_async_with_returns_test.dart b/runtime/observatory_2/tests/service_2/next_through_simple_async_with_returns_test.dart
index 9a3f234..f402762 100644
--- a/runtime/observatory_2/tests/service_2/next_through_simple_async_with_returns_test.dart
+++ b/runtime/observatory_2/tests/service_2/next_through_simple_async_with_returns_test.dart
@@ -1,14 +1,12 @@
// Copyright (c) 2017, 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.
-//
-// VMOptions=--lazy-async-stacks
import 'test_helper.dart';
import 'service_test_common.dart';
import 'dart:io';
-const int LINE_A = 14;
+const int LINE_A = 12;
const String file = "next_through_simple_async_with_returns_test.dart";
code() async { // LINE_A
diff --git a/runtime/observatory_2/tests/service_2/pause_on_unhandled_async_exceptions2_test.dart b/runtime/observatory_2/tests/service_2/pause_on_unhandled_async_exceptions2_test.dart
index 50d9537..05f2e22 100644
--- a/runtime/observatory_2/tests/service_2/pause_on_unhandled_async_exceptions2_test.dart
+++ b/runtime/observatory_2/tests/service_2/pause_on_unhandled_async_exceptions2_test.dart
@@ -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.
//
-// VMOptions=--async_debugger --lazy-async-stacks
-// VMOptions=--async_debugger --lazy-async-stacks --optimization-counter-threshold=5
+// VMOptions=--async_debugger
+// VMOptions=--async_debugger --optimization-counter-threshold=5
import 'package:observatory_2/service_io.dart';
import 'package:observatory_2/models.dart' as M;
diff --git a/runtime/observatory_2/tests/service_2/pause_on_unhandled_async_exceptions_test.dart b/runtime/observatory_2/tests/service_2/pause_on_unhandled_async_exceptions_test.dart
index d179cb6..58dff1f 100644
--- a/runtime/observatory_2/tests/service_2/pause_on_unhandled_async_exceptions_test.dart
+++ b/runtime/observatory_2/tests/service_2/pause_on_unhandled_async_exceptions_test.dart
@@ -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.
//
-// VMOptions=--async_debugger --lazy-async-stacks
+// VMOptions=--async_debugger
import 'package:observatory_2/service_io.dart';
import 'package:observatory_2/models.dart' as M;
diff --git a/runtime/observatory_2/tests/service_2/test_helper.dart b/runtime/observatory_2/tests/service_2/test_helper.dart
index b2667bf..881b6b6 100644
--- a/runtime/observatory_2/tests/service_2/test_helper.dart
+++ b/runtime/observatory_2/tests/service_2/test_helper.dart
@@ -25,7 +25,7 @@
const String.fromEnvironment('SERVICE_RESPONSE_SIZES_DIR');
/// The extra arguments to use
-const List<String> extraDebuggingArgs = ['--lazy-async-stacks'];
+const List<String> extraDebuggingArgs = [];
/// Will be set to the http address of the VM's service protocol before
/// any tests are invoked.
diff --git a/runtime/tests/vm/dart/causal_stacks/async_throws_stack_lazy_non_symbolic_test.dart b/runtime/tests/vm/dart/causal_stacks/async_throws_stack_lazy_non_symbolic_test.dart
index d131340..67efb30 100644
--- a/runtime/tests/vm/dart/causal_stacks/async_throws_stack_lazy_non_symbolic_test.dart
+++ b/runtime/tests/vm/dart/causal_stacks/async_throws_stack_lazy_non_symbolic_test.dart
@@ -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.
//
-// VMOptions=--dwarf-stack-traces --save-debugging-info=async_lazy_debug.so --lazy-async-stacks
+// VMOptions=--dwarf-stack-traces --save-debugging-info=async_lazy_debug.so
import 'dart:async';
import 'dart:io';
diff --git a/runtime/tests/vm/dart/causal_stacks/async_throws_stack_lazy_test.dart b/runtime/tests/vm/dart/causal_stacks/async_throws_stack_lazy_test.dart
index 26805f1..830b54a 100644
--- a/runtime/tests/vm/dart/causal_stacks/async_throws_stack_lazy_test.dart
+++ b/runtime/tests/vm/dart/causal_stacks/async_throws_stack_lazy_test.dart
@@ -1,8 +1,6 @@
// Copyright (c) 2019, 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.
-//
-// VMOptions=--lazy-async-stacks
import 'dart:async';
diff --git a/runtime/tests/vm/dart/causal_stacks/async_throws_stack_no_causal_non_symbolic_test.dart b/runtime/tests/vm/dart/causal_stacks/async_throws_stack_no_causal_non_symbolic_test.dart
deleted file mode 100644
index c9dbb09..0000000
--- a/runtime/tests/vm/dart/causal_stacks/async_throws_stack_no_causal_non_symbolic_test.dart
+++ /dev/null
@@ -1,17 +0,0 @@
-// Copyright (c) 2020, 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.
-//
-// VMOptions=--dwarf-stack-traces --save-debugging-info=async_no_causal_debug.so --no-lazy-async-stacks
-
-import 'dart:async';
-import 'dart:io';
-
-import 'utils.dart';
-
-Future<void> main(List<String> args) async {
- // We won't have access to the debugging info file on Android.
- if (Platform.isAndroid) return;
-
- await doTestsNoCausalNoLazy('async_no_causal_debug.so');
-}
diff --git a/runtime/tests/vm/dart/causal_stacks/async_throws_stack_no_causal_test.dart b/runtime/tests/vm/dart/causal_stacks/async_throws_stack_no_causal_test.dart
deleted file mode 100644
index 84848c9..0000000
--- a/runtime/tests/vm/dart/causal_stacks/async_throws_stack_no_causal_test.dart
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright (c) 2019, 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.
-//
-// VMOptions=--no-lazy-async-stacks
-
-import 'dart:async';
-
-import 'utils.dart';
-
-Future<void> main(List<String> args) async => await doTestsNoCausalNoLazy();
diff --git a/runtime/tests/vm/dart/causal_stacks/flutter_regress_100441_test.dart b/runtime/tests/vm/dart/causal_stacks/flutter_regress_100441_test.dart
index b5ff8ad..effb0aa 100644
--- a/runtime/tests/vm/dart/causal_stacks/flutter_regress_100441_test.dart
+++ b/runtime/tests/vm/dart/causal_stacks/flutter_regress_100441_test.dart
@@ -1,8 +1,6 @@
// Copyright (c) 2022, 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.
-//
-// VMOptions=--lazy-async-stacks
import 'dart:async';
diff --git a/runtime/tests/vm/dart/causal_stacks/utils.dart b/runtime/tests/vm/dart/causal_stacks/utils.dart
index 584fd6d..2269e31 100644
--- a/runtime/tests/vm/dart/causal_stacks/utils.dart
+++ b/runtime/tests/vm/dart/causal_stacks/utils.dart
@@ -302,209 +302,6 @@
// Test "Suites":
// ----
-// For: --no-lazy-async-stacks
-Future<void> doTestsNoCausalNoLazy([String? debugInfoFilename]) async {
- {
- final expected = const <String>[
- r'^#0 throwSync \(.*/utils.dart:16(:3)?\)$',
- r'^#1 allYield3 \(.*/utils.dart:39(:3)?\)$',
- r'^#2 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(allYield, expected, debugInfoFilename);
- await doTestAwaitThen(allYield, expected, debugInfoFilename);
- await doTestAwaitCatchError(allYield, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwSync \(.*/utils.dart:16(:3)?\)$',
- r'^#1 noYields3 \(.*/utils.dart:54(:3)?\)$',
- r'^#2 noYields2 \(.*/utils.dart:50(:9)?\)$',
- r'^#3 noYields \(.*/utils.dart:46(:9)?\)$',
- ];
- final postfix = const <String>[
- r'^#5 doTestsNoCausalNoLazy ',
- r'^#6 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await 0; // Don't let the `await do..`s chain together.
- await doTestAwait(
- noYields,
- expected +
- const <String>[
- r'^#4 doTestAwait ',
- ] +
- postfix,
- debugInfoFilename);
- await 0; // Don't let the `await do..`s chain together.
- await doTestAwaitThen(
- noYields,
- expected +
- const <String>[
- r'^#4 doTestAwaitThen ',
- ] +
- postfix,
- debugInfoFilename);
- await 0; // Don't let the `await do..`s chain together.
- await doTestAwaitCatchError(
- noYields,
- expected +
- const <String>[
- r'^#4 doTestAwaitCatchError ',
- ] +
- postfix,
- debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
- r'^#1 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(mixedYields, expected, debugInfoFilename);
- await doTestAwaitThen(mixedYields, expected, debugInfoFilename);
- await doTestAwaitCatchError(mixedYields, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
- r'^#1 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(syncSuffix, expected, debugInfoFilename);
- await doTestAwaitThen(syncSuffix, expected, debugInfoFilename);
- await doTestAwaitCatchError(syncSuffix, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
- r'^#1 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(nonAsyncNoStack, expected, debugInfoFilename);
- await doTestAwaitThen(nonAsyncNoStack, expected, debugInfoFilename);
- await doTestAwaitCatchError(nonAsyncNoStack, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwSync \(.+/utils.dart:16(:3)?\)$',
- r'^#1 asyncStarThrowSync \(.+/utils.dart:112(:11)?\)$',
- r'^#2 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(
- awaitEveryAsyncStarThrowSync, expected, debugInfoFilename);
- await doTestAwaitThen(
- awaitEveryAsyncStarThrowSync, expected, debugInfoFilename);
- await doTestAwaitCatchError(
- awaitEveryAsyncStarThrowSync, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
- r'^#1 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(
- awaitEveryAsyncStarThrowAsync, expected, debugInfoFilename);
- await doTestAwaitThen(
- awaitEveryAsyncStarThrowAsync, expected, debugInfoFilename);
- await doTestAwaitCatchError(
- awaitEveryAsyncStarThrowAsync, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
- r'^#1 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(listenAsyncStarThrowAsync, expected, debugInfoFilename);
- await doTestAwaitThen(
- listenAsyncStarThrowAsync, expected, debugInfoFilename);
- await doTestAwaitCatchError(
- listenAsyncStarThrowAsync, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'#0 throwSync \(.*/utils.dart:16(:3)?\)$',
- r'#1 allYield3 \(.*/utils.dart:39(:3)?\)$',
- r'#2 _rootRunUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(customErrorZone, expected, debugInfoFilename);
- await doTestAwaitThen(customErrorZone, expected, debugInfoFilename);
- await doTestAwaitCatchError(customErrorZone, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
- r'^#1 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(awaitTimeout, expected, debugInfoFilename);
- await doTestAwaitThen(awaitTimeout, expected, debugInfoFilename);
- await doTestAwaitCatchError(awaitTimeout, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
- r'^#1 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(awaitWait, expected, debugInfoFilename);
- await doTestAwaitThen(awaitWait, expected, debugInfoFilename);
- await doTestAwaitCatchError(awaitWait, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwAsync \(.*/utils.dart:21(:3)?\)$',
- r'^#1 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(futureSyncWhenComplete, expected, debugInfoFilename);
- await doTestAwaitThen(futureSyncWhenComplete, expected, debugInfoFilename);
- await doTestAwaitCatchError(
- futureSyncWhenComplete, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwSync \(.*/utils.dart:16(:3)?\)$',
- r'^#1 futureThen.<anonymous closure> \(.*/utils.dart:187(:5)?\)$',
- r'^#2 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(futureThen, expected, debugInfoFilename);
- await doTestAwaitThen(futureThen, expected, debugInfoFilename);
- await doTestAwaitCatchError(futureThen, expected, debugInfoFilename);
- }
-}
-
-// For: --lazy-async-stacks
Future<void> doTestsLazy([String? debugInfoFilename]) async {
// allYield
{
diff --git a/runtime/tests/vm/dart/regress40189_test.dart b/runtime/tests/vm/dart/regress40189_test.dart
index f857e5b..f37839a 100644
--- a/runtime/tests/vm/dart/regress40189_test.dart
+++ b/runtime/tests/vm/dart/regress40189_test.dart
@@ -1,8 +1,6 @@
// Copyright (c) 2020, 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.
-//
-// VMOptions=--lazy-async-stacks
import "package:expect/expect.dart";
diff --git a/runtime/tests/vm/dart_2/causal_stacks/async_throws_stack_lazy_non_symbolic_test.dart b/runtime/tests/vm/dart_2/causal_stacks/async_throws_stack_lazy_non_symbolic_test.dart
index d4d9e46..af20a8f 100644
--- a/runtime/tests/vm/dart_2/causal_stacks/async_throws_stack_lazy_non_symbolic_test.dart
+++ b/runtime/tests/vm/dart_2/causal_stacks/async_throws_stack_lazy_non_symbolic_test.dart
@@ -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.
//
-// VMOptions=--dwarf-stack-traces --save-debugging-info=async_lazy_debug.so --lazy-async-stacks
+// VMOptions=--dwarf-stack-traces --save-debugging-info=async_lazy_debug.so
// @dart = 2.9
diff --git a/runtime/tests/vm/dart_2/causal_stacks/async_throws_stack_lazy_test.dart b/runtime/tests/vm/dart_2/causal_stacks/async_throws_stack_lazy_test.dart
index ff202c8..00c1459 100644
--- a/runtime/tests/vm/dart_2/causal_stacks/async_throws_stack_lazy_test.dart
+++ b/runtime/tests/vm/dart_2/causal_stacks/async_throws_stack_lazy_test.dart
@@ -1,8 +1,6 @@
// Copyright (c) 2019, 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.
-//
-// VMOptions=--lazy-async-stacks
// @dart = 2.9
diff --git a/runtime/tests/vm/dart_2/causal_stacks/async_throws_stack_no_causal_non_symbolic_test.dart b/runtime/tests/vm/dart_2/causal_stacks/async_throws_stack_no_causal_non_symbolic_test.dart
deleted file mode 100644
index a84014e..0000000
--- a/runtime/tests/vm/dart_2/causal_stacks/async_throws_stack_no_causal_non_symbolic_test.dart
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright (c) 2020, 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.
-//
-// VMOptions=--dwarf-stack-traces --save-debugging-info=async_no_causal_debug.so --no-lazy-async-stacks
-
-// @dart = 2.9
-
-import 'dart:async';
-import 'dart:io';
-
-import 'utils.dart';
-
-Future<void> main(List<String> args) async {
- // We won't have access to the debugging info file on Android.
- if (Platform.isAndroid) return;
-
- await doTestsNoCausalNoLazy('async_no_causal_debug.so');
-}
diff --git a/runtime/tests/vm/dart_2/causal_stacks/async_throws_stack_no_causal_test.dart b/runtime/tests/vm/dart_2/causal_stacks/async_throws_stack_no_causal_test.dart
deleted file mode 100644
index 3afda58..0000000
--- a/runtime/tests/vm/dart_2/causal_stacks/async_throws_stack_no_causal_test.dart
+++ /dev/null
@@ -1,13 +0,0 @@
-// Copyright (c) 2019, 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.
-//
-// VMOptions=--no-lazy-async-stacks
-
-// @dart = 2.9
-
-import 'dart:async';
-
-import 'utils.dart';
-
-Future<void> main(List<String> args) async => await doTestsNoCausalNoLazy();
diff --git a/runtime/tests/vm/dart_2/causal_stacks/flutter_regress_100441_test.dart b/runtime/tests/vm/dart_2/causal_stacks/flutter_regress_100441_test.dart
index 2d4d2ef..e6a749d 100644
--- a/runtime/tests/vm/dart_2/causal_stacks/flutter_regress_100441_test.dart
+++ b/runtime/tests/vm/dart_2/causal_stacks/flutter_regress_100441_test.dart
@@ -1,8 +1,6 @@
// Copyright (c) 2022, 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.
-//
-// VMOptions=--lazy-async-stacks
// @dart = 2.9
import 'dart:async';
diff --git a/runtime/tests/vm/dart_2/causal_stacks/utils.dart b/runtime/tests/vm/dart_2/causal_stacks/utils.dart
index 5ae06ed..d7c80d1 100644
--- a/runtime/tests/vm/dart_2/causal_stacks/utils.dart
+++ b/runtime/tests/vm/dart_2/causal_stacks/utils.dart
@@ -304,209 +304,6 @@
// Test "Suites":
// ----
-// For: --no-lazy-async-stacks
-Future<void> doTestsNoCausalNoLazy([String debugInfoFilename]) async {
- {
- final expected = const <String>[
- r'^#0 throwSync \(.*/utils.dart:18(:3)?\)$',
- r'^#1 allYield3 \(.*/utils.dart:41(:3)?\)$',
- r'^#2 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(allYield, expected, debugInfoFilename);
- await doTestAwaitThen(allYield, expected, debugInfoFilename);
- await doTestAwaitCatchError(allYield, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwSync \(.*/utils.dart:18(:3)?\)$',
- r'^#1 noYields3 \(.*/utils.dart:56(:3)?\)$',
- r'^#2 noYields2 \(.*/utils.dart:52(:9)?\)$',
- r'^#3 noYields \(.*/utils.dart:48(:9)?\)$',
- ];
- final postfix = const <String>[
- r'^#5 doTestsNoCausalNoLazy ',
- r'^#6 _RootZone.runUnary ',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await 0; // Don't let the `await do..`s chain together.
- await doTestAwait(
- noYields,
- expected +
- const <String>[
- r'^#4 doTestAwait ',
- ] +
- postfix,
- debugInfoFilename);
- await 0; // Don't let the `await do..`s chain together.
- await doTestAwaitThen(
- noYields,
- expected +
- const <String>[
- r'^#4 doTestAwaitThen ',
- ] +
- postfix,
- debugInfoFilename);
- await 0; // Don't let the `await do..`s chain together.
- await doTestAwaitCatchError(
- noYields,
- expected +
- const <String>[
- r'^#4 doTestAwaitCatchError ',
- ] +
- postfix,
- debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwAsync \(.*/utils.dart:23(:3)?\)$',
- r'^#1 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(mixedYields, expected, debugInfoFilename);
- await doTestAwaitThen(mixedYields, expected, debugInfoFilename);
- await doTestAwaitCatchError(mixedYields, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwAsync \(.*/utils.dart:23(:3)?\)$',
- r'^#1 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(syncSuffix, expected, debugInfoFilename);
- await doTestAwaitThen(syncSuffix, expected, debugInfoFilename);
- await doTestAwaitCatchError(syncSuffix, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwAsync \(.*/utils.dart:23(:3)?\)$',
- r'^#1 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(nonAsyncNoStack, expected, debugInfoFilename);
- await doTestAwaitThen(nonAsyncNoStack, expected, debugInfoFilename);
- await doTestAwaitCatchError(nonAsyncNoStack, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwSync \(.+/utils.dart:18(:3)?\)$',
- r'^#1 asyncStarThrowSync \(.+/utils.dart:114(:11)?\)$',
- r'^#2 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(
- awaitEveryAsyncStarThrowSync, expected, debugInfoFilename);
- await doTestAwaitThen(
- awaitEveryAsyncStarThrowSync, expected, debugInfoFilename);
- await doTestAwaitCatchError(
- awaitEveryAsyncStarThrowSync, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwAsync \(.*/utils.dart:23(:3)?\)$',
- r'^#1 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(
- awaitEveryAsyncStarThrowAsync, expected, debugInfoFilename);
- await doTestAwaitThen(
- awaitEveryAsyncStarThrowAsync, expected, debugInfoFilename);
- await doTestAwaitCatchError(
- awaitEveryAsyncStarThrowAsync, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwAsync \(.*/utils.dart:23(:3)?\)$',
- r'^#1 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(listenAsyncStarThrowAsync, expected, debugInfoFilename);
- await doTestAwaitThen(
- listenAsyncStarThrowAsync, expected, debugInfoFilename);
- await doTestAwaitCatchError(
- listenAsyncStarThrowAsync, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'#0 throwSync \(.*/utils.dart:18(:3)?\)$',
- r'#1 allYield3 \(.*/utils.dart:41(:3)?\)$',
- r'#2 _rootRunUnary ',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(customErrorZone, expected, debugInfoFilename);
- await doTestAwaitThen(customErrorZone, expected, debugInfoFilename);
- await doTestAwaitCatchError(customErrorZone, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'#0 throwAsync \(.*/utils.dart:23(:3)?\)$',
- r'^#1 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(awaitTimeout, expected, debugInfoFilename);
- await doTestAwaitThen(awaitTimeout, expected, debugInfoFilename);
- await doTestAwaitCatchError(awaitTimeout, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'#0 throwAsync \(.*/utils.dart:23(:3)?\)$',
- r'^#1 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(awaitWait, expected, debugInfoFilename);
- await doTestAwaitThen(awaitWait, expected, debugInfoFilename);
- await doTestAwaitCatchError(awaitWait, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwAsync \(.*/utils.dart:23(:3)?\)$',
- r'^#1 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(futureSyncWhenComplete, expected, debugInfoFilename);
- await doTestAwaitThen(futureSyncWhenComplete, expected, debugInfoFilename);
- await doTestAwaitCatchError(
- futureSyncWhenComplete, expected, debugInfoFilename);
- }
-
- {
- final expected = const <String>[
- r'^#0 throwSync \(.*/utils.dart:18(:3)?\)$',
- r'^#1 futureThen.<anonymous closure> \(.*/utils.dart:189(:5)?\)$',
- r'^#2 _RootZone.runUnary \(.+\)$',
- // The rest are internal frames which we don't really care about.
- IGNORE_REMAINING_STACK,
- ];
- await doTestAwait(futureThen, expected, debugInfoFilename);
- await doTestAwaitThen(futureThen, expected, debugInfoFilename);
- await doTestAwaitCatchError(futureThen, expected, debugInfoFilename);
- }
-}
-
-// For: --lazy-async-stacks
Future<void> doTestsLazy([String debugInfoFilename]) async {
// allYield
{
diff --git a/runtime/tests/vm/dart_2/regress40189_test.dart b/runtime/tests/vm/dart_2/regress40189_test.dart
index cbc9f45..348e1ec 100644
--- a/runtime/tests/vm/dart_2/regress40189_test.dart
+++ b/runtime/tests/vm/dart_2/regress40189_test.dart
@@ -1,8 +1,6 @@
// Copyright (c) 2020, 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.
-//
-// VMOptions=--lazy-async-stacks
// @dart = 2.9
diff --git a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
index 529c56d..0ccfd45 100644
--- a/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
+++ b/runtime/vm/compiler/frontend/kernel_binary_flowgraph.cc
@@ -5639,7 +5639,7 @@
// Note: Is..() methods use the modifiers set above, so order
// matters.
if (function.IsAsyncClosure() || function.IsAsyncGenClosure()) {
- function.set_is_inlinable(!FLAG_lazy_async_stacks);
+ function.set_is_inlinable(false);
}
ASSERT(!function.IsCompactAsyncFunction());
ASSERT(!function.IsCompactAsyncStarFunction());
diff --git a/runtime/vm/compiler/frontend/scope_builder.cc b/runtime/vm/compiler/frontend/scope_builder.cc
index 5151145..2db5f8f 100644
--- a/runtime/vm/compiler/frontend/scope_builder.cc
+++ b/runtime/vm/compiler/frontend/scope_builder.cc
@@ -1384,7 +1384,7 @@
// Lift the special async vars out of the function body scope, into the
// outer function declaration scope.
// This way we can allocate them in the outermost context at fixed indices,
- // allowing support for --lazy-async-stacks implementation to find awaiters.
+ // allowing support for async stack traces implementation to find awaiters.
if (name.Equals(Symbols::AwaitJumpVar()) ||
name.Equals(Symbols::AsyncFuture()) || name.Equals(Symbols::is_sync()) ||
name.Equals(Symbols::Controller())) {
diff --git a/runtime/vm/compiler/jit/compiler.cc b/runtime/vm/compiler/jit/compiler.cc
index 5dacd56..bcfe3c9 100644
--- a/runtime/vm/compiler/jit/compiler.cc
+++ b/runtime/vm/compiler/jit/compiler.cc
@@ -102,7 +102,6 @@
FLAG_reorder_basic_blocks = true;
FLAG_use_field_guards = false;
FLAG_use_cha_deopt = false;
- FLAG_lazy_async_stacks = true;
#if !defined(PRODUCT) && !defined(DART_PRECOMPILED_RUNTIME)
// Set flags affecting runtime accordingly for gen_snapshot.
diff --git a/runtime/vm/debugger.cc b/runtime/vm/debugger.cc
index 31cc36f..ec145d7 100644
--- a/runtime/vm/debugger.cc
+++ b/runtime/vm/debugger.cc
@@ -1966,13 +1966,6 @@
}
DebuggerStackTrace* DebuggerStackTrace::CollectAsyncCausal() {
- if (FLAG_lazy_async_stacks) {
- return CollectAsyncLazy();
- }
- return nullptr;
-}
-
-DebuggerStackTrace* DebuggerStackTrace::CollectAsyncLazy() {
Thread* thread = Thread::Current();
Zone* zone = thread->zone();
Isolate* isolate = thread->isolate();
@@ -1996,9 +1989,8 @@
&inlined_code, &deopt_frame);
};
- StackTraceUtils::CollectFramesLazy(thread, code_array, &pc_offset_array,
- /*skip_frames=*/0, &on_sync_frame,
- &has_async);
+ StackTraceUtils::CollectFrames(thread, code_array, &pc_offset_array,
+ /*skip_frames=*/0, &on_sync_frame, &has_async);
// If the entire stack is sync, return no (async) trace.
if (!has_async) {
@@ -4072,31 +4064,29 @@
}
// We need to manually set a synthetic breakpoint for async_op before entry.
- if (FLAG_lazy_async_stacks) {
- // async and async* functions always contain synthetic async_ops.
- if ((frame->function().IsAsyncFunction() ||
- frame->function().IsAsyncGenerator()) &&
- !frame->function().IsSuspendableFunction()) {
- ASSERT(!frame->GetSavedCurrentContext().IsNull());
- ASSERT(frame->GetSavedCurrentContext().num_variables() >
- Context::kAsyncFutureIndex);
+ // async and async* functions always contain synthetic async_ops.
+ if ((frame->function().IsAsyncFunction() ||
+ frame->function().IsAsyncGenerator()) &&
+ !frame->function().IsSuspendableFunction()) {
+ ASSERT(!frame->GetSavedCurrentContext().IsNull());
+ ASSERT(frame->GetSavedCurrentContext().num_variables() >
+ Context::kAsyncFutureIndex);
- const Object& async_future = Object::Handle(
- frame->GetSavedCurrentContext().At(Context::kAsyncFutureIndex));
+ const Object& async_future = Object::Handle(
+ frame->GetSavedCurrentContext().At(Context::kAsyncFutureIndex));
- // Only set breakpoint when entering async_op the first time.
- // :async_future should be uninitialised at this point:
- if (async_future.IsNull()) {
- const Function& async_op = Function::Handle(
- ClosureFunctionsCache::GetUniqueInnerClosure(frame->function()));
- if (!async_op.IsNull()) {
- SetBreakpointAtAsyncOp(async_op);
- // After setting the breakpoint we stop stepping and continue the
- // debugger until the next breakpoint, to step over all the
- // synthetic code.
- Continue();
- return Error::null();
- }
+ // Only set breakpoint when entering async_op the first time.
+ // :async_future should be uninitialised at this point:
+ if (async_future.IsNull()) {
+ const Function& async_op = Function::Handle(
+ ClosureFunctionsCache::GetUniqueInnerClosure(frame->function()));
+ if (!async_op.IsNull()) {
+ SetBreakpointAtAsyncOp(async_op);
+ // After setting the breakpoint we stop stepping and continue the
+ // debugger until the next breakpoint, to step over all the
+ // synthetic code.
+ Continue();
+ return Error::null();
}
}
}
diff --git a/runtime/vm/debugger.h b/runtime/vm/debugger.h
index 47e701f..56dfd6d 100644
--- a/runtime/vm/debugger.h
+++ b/runtime/vm/debugger.h
@@ -524,7 +524,6 @@
Array* deopt_frame);
static DebuggerStackTrace* CollectAsyncCausal();
- static DebuggerStackTrace* CollectAsyncLazy();
ZoneGrowableArray<ActivationFrame*> trace_;
diff --git a/runtime/vm/flag_list.h b/runtime/vm/flag_list.h
index 462413c..46a7bd5 100644
--- a/runtime/vm/flag_list.h
+++ b/runtime/vm/flag_list.h
@@ -64,7 +64,6 @@
P(code_comments, bool, false, "Include comments into code and disassembly.") \
P(dwarf_stack_traces_mode, bool, false, \
"Use --[no-]dwarf-stack-traces instead.") \
- P(lazy_async_stacks, bool, true, "Reconstruct async stacks from listeners") \
P(lazy_dispatchers, bool, true, "Generate dispatchers lazily") \
R(dedup_instructions, true, bool, false, \
"Canonicalize instructions when precompiling.")
@@ -135,6 +134,7 @@
P(idle_duration_micros, int, 500 * kMicrosecondsPerMillisecond, \
"Allow idle tasks to run for this long.") \
P(interpret_irregexp, bool, false, "Use irregexp bytecode interpreter") \
+ P(lazy_async_stacks, bool, true, "Obsolete, ignored.") \
P(link_natives_lazily, bool, false, "Link native calls lazily") \
R(log_marker_tasks, false, bool, false, \
"Log debugging information for old gen GC marking tasks.") \
diff --git a/runtime/vm/kernel_loader.cc b/runtime/vm/kernel_loader.cc
index ee8d3a6..e37a681 100644
--- a/runtime/vm/kernel_loader.cc
+++ b/runtime/vm/kernel_loader.cc
@@ -2056,17 +2056,17 @@
switch (function_node_helper.dart_async_marker_) {
case FunctionNodeHelper::kSyncStar:
function.set_modifier(UntaggedFunction::kSyncGen);
- function.set_is_visible(!FLAG_lazy_async_stacks);
+ function.set_is_visible(false);
break;
case FunctionNodeHelper::kAsync:
function.set_modifier(UntaggedFunction::kAsync);
- function.set_is_inlinable(!FLAG_lazy_async_stacks);
- function.set_is_visible(!FLAG_lazy_async_stacks);
+ function.set_is_inlinable(false);
+ function.set_is_visible(false);
break;
case FunctionNodeHelper::kAsyncStar:
function.set_modifier(UntaggedFunction::kAsyncGen);
- function.set_is_inlinable(!FLAG_lazy_async_stacks);
- function.set_is_visible(!FLAG_lazy_async_stacks);
+ function.set_is_inlinable(false);
+ function.set_is_visible(false);
break;
default:
// no special modifier
diff --git a/runtime/vm/service.cc b/runtime/vm/service.cc
index c056360..85cf403 100644
--- a/runtime/vm/service.cc
+++ b/runtime/vm/service.cc
@@ -2881,6 +2881,13 @@
output.Add(instance);
return;
}
+ if (type.IsTypeRef()) {
+ // A TypeRef is used to break cycles in the representation of types
+ // calling type class on it will cause an infinite recursion.
+ // We use null instead.
+ output.Add(instance);
+ return;
+ }
const Class& cls = Class::Handle(type.type_class());
const Library& lib = Library::Handle(zone, cls.library());
diff --git a/runtime/vm/stack_trace.cc b/runtime/vm/stack_trace.cc
index 671f58b..21ab60e 100644
--- a/runtime/vm/stack_trace.cc
+++ b/runtime/vm/stack_trace.cc
@@ -627,7 +627,7 @@
}
}
-void StackTraceUtils::CollectFramesLazy(
+void StackTraceUtils::CollectFrames(
Thread* thread,
const GrowableObjectArray& code_array,
GrowableArray<uword>* pc_offset_array,
@@ -696,85 +696,4 @@
return;
}
-intptr_t StackTraceUtils::CountFrames(Thread* thread,
- int skip_frames,
- const Function& async_function,
- bool* sync_async_end) {
- Zone* zone = thread->zone();
- intptr_t frame_count = 0;
- DartFrameIterator frames(thread, StackFrameIterator::kNoCrossThreadIteration);
- StackFrame* frame = frames.NextFrame();
- ASSERT(frame != nullptr); // We expect to find a dart invocation frame.
- Function& function = Function::Handle(zone);
- Code& code = Code::Handle(zone);
- Closure& closure = Closure::Handle(zone);
- const bool async_function_is_null = async_function.IsNull();
-
- ASSERT(async_function_is_null || sync_async_end != nullptr);
-
- for (; frame != nullptr; frame = frames.NextFrame()) {
- if (skip_frames > 0) {
- skip_frames--;
- continue;
- }
- code = frame->LookupDartCode();
- function = code.function();
-
- frame_count++;
-
- const bool function_is_null = function.IsNull();
-
- if (!async_function_is_null && !function_is_null &&
- function.parent_function() != Function::null()) {
- if (async_function.ptr() == function.parent_function()) {
- if (function.IsAsyncClosure() || function.IsAsyncGenClosure()) {
- ObjectPtr* last_caller_obj =
- reinterpret_cast<ObjectPtr*>(frame->GetCallerSp());
- closure = FindClosureInFrame(last_caller_obj, function);
- if (!closure.IsNull() &&
- CallerClosureFinder::IsRunningAsync(closure)) {
- *sync_async_end = false;
- return frame_count;
- }
- }
- break;
- }
- }
- }
-
- if (!async_function_is_null) {
- *sync_async_end = true;
- }
-
- return frame_count;
-}
-
-intptr_t StackTraceUtils::CollectFrames(Thread* thread,
- const Array& code_array,
- const TypedData& pc_offset_array,
- intptr_t array_offset,
- intptr_t count,
- int skip_frames) {
- Zone* zone = thread->zone();
- DartFrameIterator frames(thread, StackFrameIterator::kNoCrossThreadIteration);
- StackFrame* frame = frames.NextFrame();
- ASSERT(frame != NULL); // We expect to find a dart invocation frame.
- Code& code = Code::Handle(zone);
- intptr_t collected_frames_count = 0;
- for (; (frame != NULL) && (collected_frames_count < count);
- frame = frames.NextFrame()) {
- if (skip_frames > 0) {
- skip_frames--;
- continue;
- }
- code = frame->LookupDartCode();
- const intptr_t pc_offset = frame->pc() - code.PayloadStart();
- code_array.SetAt(array_offset, code);
- pc_offset_array.SetUintPtr(array_offset * kWordSize, pc_offset);
- array_offset++;
- collected_frames_count++;
- }
- return collected_frames_count;
-}
-
} // namespace dart
diff --git a/runtime/vm/stack_trace.h b/runtime/vm/stack_trace.h
index 37df069..cfd558c 100644
--- a/runtime/vm/stack_trace.h
+++ b/runtime/vm/stack_trace.h
@@ -144,46 +144,17 @@
/// hit which has yielded before (i.e. is not in sync-async case).
///
/// From there on finds the closure of the async/async* frame and starts
- /// traversing the listeners:
- /// while (closure != null) {
- /// yield_index = closure.context[Context::kAsyncJumpVarIndex]
- /// pc = closure.function.code.pc_descriptors.LookupPcFromYieldIndex(
- /// yield_index);
- /// <emit pc in frame>
- /// closure = closure.context[Context::kAsyncCompleterVarIndex]._future
- /// ._resultOrListeners.callback;
- /// }
+ /// traversing the listeners.
///
/// If [on_sync_frames] is non-nullptr, it will be called for every
/// synchronous frame which is collected.
- static void CollectFramesLazy(
+ static void CollectFrames(
Thread* thread,
const GrowableObjectArray& code_array,
GrowableArray<uword>* pc_offset_array,
int skip_frames,
std::function<void(StackFrame*)>* on_sync_frames = nullptr,
bool* has_async = nullptr);
-
- /// Counts the number of stack frames.
- /// Skips over the first |skip_frames|.
- /// If |async_function| is not null, stops at the function that has
- /// |async_function| as its parent, and records in 'sync_async_end' whether
- /// |async_function| was called synchronously.
- static intptr_t CountFrames(Thread* thread,
- int skip_frames,
- const Function& async_function,
- bool* sync_async_end);
-
- /// Collects |count| frames into |code_array| and |pc_offset_array|.
- /// Writing begins at |array_offset|.
- /// Skips over the first |skip_frames|.
- /// Returns the number of frames collected.
- static intptr_t CollectFrames(Thread* thread,
- const Array& code_array,
- const TypedData& pc_offset_array,
- intptr_t array_offset,
- intptr_t count,
- int skip_frames);
};
} // namespace dart
diff --git a/sdk/lib/_internal/vm/lib/async_patch.dart b/sdk/lib/_internal/vm/lib/async_patch.dart
index 238cbb6..8e1d110 100644
--- a/sdk/lib/_internal/vm/lib/async_patch.dart
+++ b/sdk/lib/_internal/vm/lib/async_patch.dart
@@ -372,15 +372,69 @@
}
}
+ @pragma("vm:invisible")
+ @pragma("vm:prefer-inline")
+ void _awaitCompletedFuture(_Future future) {
+ assert(future._isComplete);
+ final zone = Zone._current;
+ if (future._hasError) {
+ @pragma("vm:invisible")
+ void run() {
+ final AsyncError asyncError =
+ unsafeCast<AsyncError>(future._resultOrListeners);
+ zone.runBinary(
+ unsafeCast<dynamic Function(Object, StackTrace)>(_errorCallback),
+ asyncError.error,
+ asyncError.stackTrace);
+ }
+
+ zone.scheduleMicrotask(run);
+ } else {
+ @pragma("vm:invisible")
+ void run() {
+ zone.runUnary(unsafeCast<dynamic Function(dynamic)>(_thenCallback),
+ future._resultOrListeners);
+ }
+
+ zone.scheduleMicrotask(run);
+ }
+ }
+
+ @pragma("vm:invisible")
+ @pragma("vm:prefer-inline")
+ void _awaitNotFuture(Object? object) {
+ final zone = Zone._current;
+ @pragma("vm:invisible")
+ void run() {
+ zone.runUnary(
+ unsafeCast<dynamic Function(dynamic)>(_thenCallback), object);
+ }
+
+ zone.scheduleMicrotask(run);
+ }
+
@pragma("vm:entry-point", "call")
@pragma("vm:invisible")
Object? _await(Object? object) {
- if (_trace) print('_awaitAsync (object=$object)');
+ if (_trace) print('_await (object=$object)');
if (_thenCallback == null) {
_createAsyncCallbacks();
}
- _awaitHelper(object, unsafeCast<dynamic Function(dynamic)>(_thenCallback),
- unsafeCast<dynamic Function(Object, StackTrace)>(_errorCallback));
+ if (object is _Future) {
+ if (object._isComplete) {
+ _awaitCompletedFuture(object);
+ } else {
+ object._thenAwait<dynamic>(
+ unsafeCast<dynamic Function(dynamic)>(_thenCallback),
+ unsafeCast<dynamic Function(Object, StackTrace)>(_errorCallback));
+ }
+ } else if (object is! Future) {
+ _awaitNotFuture(object);
+ } else {
+ object.then(unsafeCast<dynamic Function(dynamic)>(_thenCallback),
+ onError:
+ unsafeCast<dynamic Function(Object, StackTrace)>(_errorCallback));
+ }
return _functionData;
}
@@ -392,14 +446,16 @@
'returnValue=$returnValue)');
}
_Future future;
- bool isSync = true;
if (suspendState is _SuspendState) {
future = unsafeCast<_Future>(suspendState._functionData);
} else {
future = unsafeCast<_Future>(suspendState);
- isSync = false;
}
- _completeOnAsyncReturn(future, returnValue, isSync);
+ if (returnValue is Future) {
+ future._asyncCompleteUnchecked(returnValue);
+ } else {
+ future._completeWithValue(returnValue);
+ }
return future;
}
@@ -412,14 +468,12 @@
'returnValue=$returnValue)');
}
_Future future;
- bool isSync = true;
if (suspendState is _SuspendState) {
future = unsafeCast<_Future>(suspendState._functionData);
} else {
future = unsafeCast<_Future>(suspendState);
- isSync = false;
}
- _completeWithNoFutureOnAsyncReturn(future, returnValue, isSync);
+ future._completeWithValue(returnValue);
return future;
}
diff --git a/tests/language/vm/lazy_async_exception_stack2_test.dart b/tests/language/vm/lazy_async_exception_stack2_test.dart
index bd9b8d5..9368e75 100644
--- a/tests/language/vm/lazy_async_exception_stack2_test.dart
+++ b/tests/language/vm/lazy_async_exception_stack2_test.dart
@@ -1,8 +1,6 @@
// Copyright (c) 2017, 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.
-//
-// VMOptions=--lazy-async-stacks
import 'package:async_helper/async_minitest.dart';
diff --git a/tests/language/vm/lazy_async_exception_stack_test.dart b/tests/language/vm/lazy_async_exception_stack_test.dart
index 9b9705e..8811343 100644
--- a/tests/language/vm/lazy_async_exception_stack_test.dart
+++ b/tests/language/vm/lazy_async_exception_stack_test.dart
@@ -1,8 +1,6 @@
// Copyright (c) 2017, 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.
-//
-// VMOptions=--lazy-async-stacks
import 'package:async_helper/async_minitest.dart';
@@ -36,8 +34,8 @@
} catch (e, st) {
expect(
h.stringContainsInOrder(st.toString(), [
- 'thrower', '.dart:12', // no auto-format.
- 'generator', '.dart:21', // no auto-format.
+ 'thrower', '.dart:10', // no auto-format.
+ 'generator', '.dart:19', // no auto-format.
'<asynchronous suspension>', // no auto-format.
'foo', '.dart', // no auto-format.
'main',
@@ -74,8 +72,8 @@
} catch (e, st) {
expect(
h.stringContainsInOrder(st.toString(), [
- 'thrower', '.dart:12', // no auto-format.
- 'main.<anonymous closure>', '.dart:73', // no auto-format.
+ 'thrower', '.dart:10', // no auto-format.
+ 'main.<anonymous closure>', '.dart:71', // no auto-format.
]),
isTrue);
}
diff --git a/tests/language_2/vm/lazy_async_exception_stack2_test.dart b/tests/language_2/vm/lazy_async_exception_stack2_test.dart
index 81df6ce..9cff86a 100644
--- a/tests/language_2/vm/lazy_async_exception_stack2_test.dart
+++ b/tests/language_2/vm/lazy_async_exception_stack2_test.dart
@@ -1,8 +1,6 @@
// Copyright (c) 2017, 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.
-//
-// VMOptions=--lazy-async-stacks
// @dart = 2.9
diff --git a/tests/language_2/vm/lazy_async_exception_stack_test.dart b/tests/language_2/vm/lazy_async_exception_stack_test.dart
index 46ee9ff..f037568 100644
--- a/tests/language_2/vm/lazy_async_exception_stack_test.dart
+++ b/tests/language_2/vm/lazy_async_exception_stack_test.dart
@@ -1,8 +1,6 @@
// Copyright (c) 2017, 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.
-//
-// VMOptions=--lazy-async-stacks
// @dart = 2.9
@@ -38,8 +36,8 @@
} catch (e, st) {
expect(
h.stringContainsInOrder(st.toString(), [
- 'thrower', '.dart:14', // no auto-format.
- 'generator', '.dart:23', // no auto-format.
+ 'thrower', '.dart:12', // no auto-format.
+ 'generator', '.dart:21', // no auto-format.
'<asynchronous suspension>', // no auto-format.
'foo', '.dart', // no auto-format.
'main',
@@ -76,8 +74,8 @@
} catch (e, st) {
expect(
h.stringContainsInOrder(st.toString(), [
- 'thrower', '.dart:14', // no auto-format.
- 'main.<anonymous closure>', '.dart:75', // no auto-format.
+ 'thrower', '.dart:12', // no auto-format.
+ 'main.<anonymous closure>', '.dart:73', // no auto-format.
]),
isTrue);
}
diff --git a/tests/standalone/lazy_async_stack_test.dart b/tests/standalone/lazy_async_stack_test.dart
index 652edb3..810f1ac 100644
--- a/tests/standalone/lazy_async_stack_test.dart
+++ b/tests/standalone/lazy_async_stack_test.dart
@@ -1,8 +1,6 @@
// Copyright (c) 2017, 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.
-//
-// VMOptions=--lazy-async-stacks
import "package:expect/expect.dart";
diff --git a/tests/standalone_2/lazy_async_stack_test.dart b/tests/standalone_2/lazy_async_stack_test.dart
index 5066215..707d5ee 100644
--- a/tests/standalone_2/lazy_async_stack_test.dart
+++ b/tests/standalone_2/lazy_async_stack_test.dart
@@ -1,8 +1,6 @@
// Copyright (c) 2017, 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.
-//
-// VMOptions=--lazy-async-stacks
// @dart = 2.9
diff --git a/tools/VERSION b/tools/VERSION
index 7e37bbe..4ffdc59 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 18
PATCH 0
-PRERELEASE 176
+PRERELEASE 177
PRERELEASE_PATCH 0
\ No newline at end of file