Version 2.11.0-246.0.dev
Merge commit 'feeb7ad461766c02e0282e919516ab486ce621ba' into 'dev'
diff --git a/DEPS b/DEPS
index ef5cb12..727abd3 100644
--- a/DEPS
+++ b/DEPS
@@ -66,7 +66,7 @@
# Revisions of /third_party/* dependencies.
"args_tag": "1.6.0",
- "async_rev": "38ace5fa83697928d5f29911e346e6311dd00857",
+ "async_rev": "6d2de25f208b011d79d056115256d3840229723b",
"bazel_worker_rev": "26680d5e249b249c7216ab2fed0ac8ed4ee285c5",
"benchmark_harness_rev": "ec6b646f5443faa871e126ac1ba248c94ca06257",
"boolean_selector_rev": "665e6921ab246569420376f827bff4585dff0b14",
@@ -76,7 +76,7 @@
"charcode_rev": "4a685faba42d86ebd9d661eadd1e79d0a1c34c43",
"chrome_rev" : "19997",
"cli_util_rev" : "335ed165887d0ec97c2a09173ebf22dcf56a6c4e",
- "collection_rev": "7d44763d62f97698b15c08ee360d838dccb63c88",
+ "collection_rev": "60e6ee2228586980826b07ec1df633bd879f42ea",
"convert_rev": "c1b01f832835d3d8a06b0b246a361c0eaab35d3c",
"crypto_rev": "f7c48b334b1386bc5ab0f706fbcd6df8496a87fc",
"csslib_rev": "6f77b3dcee957d3e2d5083f666221a220e9ed1f1",
@@ -97,7 +97,7 @@
"dart_style_tag": "1.3.8", # Please see the note above before updating.
"chromedriver_tag": "83.0.4103.39",
- "dartdoc_rev" : "39cec16700839847876849fef4f0769f8689b6c8",
+ "dartdoc_rev" : "72c69f8659ce8823ce2dde9a4f758b0fa617ab5e",
"ffi_rev": "a90bd424116fb6f416337db67425171f2dc4c98f",
"fixnum_rev": "16d3890c6dc82ca629659da1934e412292508bba",
"glob_rev": "e9f4e6b7ae8abe5071461cf8f47191bb19cf7ef6",
diff --git a/pkg/analysis_server/test/edit/bulk_fixes_test.dart b/pkg/analysis_server/test/edit/bulk_fixes_test.dart
index 18f2356..5ad4e47 100644
--- a/pkg/analysis_server/test/edit/bulk_fixes_test.dart
+++ b/pkg/analysis_server/test/edit/bulk_fixes_test.dart
@@ -42,6 +42,28 @@
createProject();
}
+ Future<void> test_annotateOverrides_excludedFile() async {
+ addAnalysisOptionsFile('''
+analyzer:
+ exclude:
+ - test/**
+linter:
+ rules:
+ - annotate_overrides
+''');
+
+ newFile('$projectPath/test/test.dart', content: '''
+class A {
+ void f() {}
+}
+class B extends A {
+ void f() {}
+}
+''');
+
+ await assertNoEdits();
+ }
+
Future<void> test_annotateOverrides_excludedSubProject() async {
// Root project.
addAnalysisOptionsFile('''
diff --git a/pkg/analysis_server/test/src/cider/cider_service.dart b/pkg/analysis_server/test/src/cider/cider_service.dart
index 2fe6e3a..ccc8b91 100644
--- a/pkg/analysis_server/test/src/cider/cider_service.dart
+++ b/pkg/analysis_server/test/src/cider/cider_service.dart
@@ -43,7 +43,6 @@
(String path) => _getDigest(path),
null,
workspace: workspace,
- libraryContextResetTimeout: null,
);
fileResolver.testView = FileResolverTestView();
}
diff --git a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
index ab523a5..b77c5aa 100644
--- a/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
+++ b/pkg/analyzer/lib/src/dart/micro/resolve_file.dart
@@ -2,7 +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.
-import 'dart:async';
import 'dart:typed_data';
import 'package:analyzer/dart/analysis/results.dart';
@@ -70,8 +69,6 @@
final Workspace workspace;
- _LibraryContextReset _libraryContextReset;
-
/// This field gets value only during testing.
FileResolverTestView testView;
@@ -96,7 +93,7 @@
String Function(String path) getFileDigest,
void Function(List<String> paths) prefetchFiles, {
@required Workspace workspace,
- Duration libraryContextResetTimeout = const Duration(seconds: 60),
+ @deprecated Duration libraryContextResetTimeout,
}) : this.from(
logger: logger,
resourceProvider: resourceProvider,
@@ -104,6 +101,7 @@
getFileDigest: getFileDigest,
prefetchFiles: prefetchFiles,
workspace: workspace,
+ // ignore: deprecated_member_use_from_same_package
libraryContextResetTimeout: libraryContextResetTimeout,
);
@@ -115,7 +113,7 @@
@required void Function(List<String> paths) prefetchFiles,
@required Workspace workspace,
CiderByteStore byteStore,
- Duration libraryContextResetTimeout = const Duration(seconds: 60),
+ @deprecated Duration libraryContextResetTimeout,
}) : logger = logger,
sourceFactory = sourceFactory,
resourceProvider = resourceProvider,
@@ -124,10 +122,6 @@
workspace = workspace {
byteStore ??= CiderCachedByteStore(memoryCacheSize);
this.byteStore = byteStore;
- _libraryContextReset = _LibraryContextReset(
- fileResolver: this,
- resetTimeout: libraryContextResetTimeout,
- );
}
List<LibrariesLogEntry> get librariesLogEntries {
@@ -165,9 +159,8 @@
}
}
- void dispose() {
- _libraryContextReset.dispose();
- }
+ @deprecated
+ void dispose() {}
ErrorsResult getErrors({
@required String path,
@@ -177,52 +170,50 @@
performance ??= OperationPerformanceImpl('<default>');
- return _withLibraryContextReset(() {
- return logger.run('Get errors for $path', () {
- var fileContext = getFileContext(
+ return logger.run('Get errors for $path', () {
+ var fileContext = getFileContext(
+ path: path,
+ performance: performance,
+ );
+ var file = fileContext.file;
+
+ var errorsSignatureBuilder = ApiSignature();
+ errorsSignatureBuilder.addBytes(file.libraryCycle.signature);
+ errorsSignatureBuilder.addBytes(file.digest);
+ var errorsSignature = errorsSignatureBuilder.toByteList();
+
+ var errorsKey = file.path + '.errors';
+ var bytes = byteStore.get(errorsKey, errorsSignature)?.bytes;
+ List<AnalysisError> errors;
+ if (bytes != null) {
+ var data = CiderUnitErrors.fromBuffer(bytes);
+ errors = data.errors.map((error) {
+ return ErrorEncoding.decode(file.source, error);
+ }).toList();
+ }
+
+ if (errors == null) {
+ var unitResult = resolve(
path: path,
performance: performance,
);
- var file = fileContext.file;
+ errors = unitResult.errors;
- var errorsSignatureBuilder = ApiSignature();
- errorsSignatureBuilder.addBytes(file.libraryCycle.signature);
- errorsSignatureBuilder.addBytes(file.digest);
- var errorsSignature = errorsSignatureBuilder.toByteList();
+ bytes = CiderUnitErrorsBuilder(
+ signature: errorsSignature,
+ errors: errors.map(ErrorEncoding.encode).toList(),
+ ).toBuffer();
+ bytes = byteStore.putGet(errorsKey, errorsSignature, bytes).bytes;
+ }
- var errorsKey = file.path + '.errors';
- var bytes = byteStore.get(errorsKey, errorsSignature)?.bytes;
- List<AnalysisError> errors;
- if (bytes != null) {
- var data = CiderUnitErrors.fromBuffer(bytes);
- errors = data.errors.map((error) {
- return ErrorEncoding.decode(file.source, error);
- }).toList();
- }
-
- if (errors == null) {
- var unitResult = resolve(
- path: path,
- performance: performance,
- );
- errors = unitResult.errors;
-
- bytes = CiderUnitErrorsBuilder(
- signature: errorsSignature,
- errors: errors.map(ErrorEncoding.encode).toList(),
- ).toBuffer();
- bytes = byteStore.putGet(errorsKey, errorsSignature, bytes).bytes;
- }
-
- return ErrorsResultImpl(
- contextObjects.analysisSession,
- path,
- file.uri,
- file.lineInfo,
- false, // isPart
- errors,
- );
- });
+ return ErrorsResultImpl(
+ contextObjects.analysisSession,
+ path,
+ file.uri,
+ file.lineInfo,
+ false, // isPart
+ errors,
+ );
});
}
@@ -304,19 +295,17 @@
var performance = OperationPerformanceImpl('<unused>');
- _withLibraryContextReset(() {
- var fileContext = getFileContext(
- path: path,
- performance: performance,
- );
- var file = fileContext.file;
- var libraryFile = file.partOfLibrary ?? file;
+ var fileContext = getFileContext(
+ path: path,
+ performance: performance,
+ );
+ var file = fileContext.file;
+ var libraryFile = file.partOfLibrary ?? file;
- libraryContext.load2(
- targetLibrary: libraryFile,
- performance: performance,
- );
- });
+ libraryContext.load2(
+ targetLibrary: libraryFile,
+ performance: performance,
+ );
_resetContextObjects();
}
@@ -338,87 +327,85 @@
performance ??= OperationPerformanceImpl('<default>');
- return _withLibraryContextReset(() {
- return logger.run('Resolve $path', () {
- var fileContext = getFileContext(
- path: path,
+ return logger.run('Resolve $path', () {
+ var fileContext = getFileContext(
+ path: path,
+ performance: performance,
+ );
+ var file = fileContext.file;
+ var libraryFile = file.partOfLibrary ?? file;
+
+ int completionOffset;
+ if (completionLine != null && completionColumn != null) {
+ var lineOffset = file.lineInfo.getOffsetOfLine(completionLine);
+ completionOffset = lineOffset + completionColumn;
+ }
+
+ performance.run('libraryContext', (performance) {
+ libraryContext.load2(
+ targetLibrary: libraryFile,
performance: performance,
);
- var file = fileContext.file;
- var libraryFile = file.partOfLibrary ?? file;
-
- int completionOffset;
- if (completionLine != null && completionColumn != null) {
- var lineOffset = file.lineInfo.getOffsetOfLine(completionLine);
- completionOffset = lineOffset + completionColumn;
- }
-
- performance.run('libraryContext', (performance) {
- libraryContext.load2(
- targetLibrary: libraryFile,
- performance: performance,
- );
- });
-
- testView?.addResolvedFile(path);
-
- var content = _getFileContent(path);
- var errorListener = RecordingErrorListener();
- var unit = file.parse(errorListener, content);
-
- Map<FileState, UnitAnalysisResult> results;
-
- logger.run('Compute analysis results', () {
- var libraryAnalyzer = LibraryAnalyzer(
- fileContext.analysisOptions,
- contextObjects.declaredVariables,
- sourceFactory,
- (_) => true, // _isLibraryUri
- contextObjects.analysisContext,
- libraryContext.elementFactory,
- contextObjects.inheritanceManager,
- libraryFile,
- resourceProvider,
- (file) => file.getContentWithSameDigest(),
- );
-
- try {
- results = performance.run('analyze', (performance) {
- return NullSafetyUnderstandingFlag.enableNullSafetyTypes(() {
- return libraryAnalyzer.analyzeSync(
- completionPath: completionOffset != null ? path : null,
- completionOffset: completionOffset,
- performance: performance,
- );
- });
- });
- } catch (exception, stackTrace) {
- var fileContentMap = <String, String>{};
- for (var file in libraryFile.libraryFiles) {
- var path = file.path;
- fileContentMap[path] = _getFileContent(path);
- }
- throw CaughtExceptionWithFiles(
- exception,
- stackTrace,
- fileContentMap,
- );
- }
- });
- UnitAnalysisResult fileResult = results[file];
-
- return ResolvedUnitResultImpl(
- contextObjects.analysisSession,
- path,
- file.uri,
- file.exists,
- content,
- unit.lineInfo,
- false, // isPart
- fileResult.unit,
- fileResult.errors,
- );
});
+
+ testView?.addResolvedFile(path);
+
+ var content = _getFileContent(path);
+ var errorListener = RecordingErrorListener();
+ var unit = file.parse(errorListener, content);
+
+ Map<FileState, UnitAnalysisResult> results;
+
+ logger.run('Compute analysis results', () {
+ var libraryAnalyzer = LibraryAnalyzer(
+ fileContext.analysisOptions,
+ contextObjects.declaredVariables,
+ sourceFactory,
+ (_) => true, // _isLibraryUri
+ contextObjects.analysisContext,
+ libraryContext.elementFactory,
+ contextObjects.inheritanceManager,
+ libraryFile,
+ resourceProvider,
+ (file) => file.getContentWithSameDigest(),
+ );
+
+ try {
+ results = performance.run('analyze', (performance) {
+ return NullSafetyUnderstandingFlag.enableNullSafetyTypes(() {
+ return libraryAnalyzer.analyzeSync(
+ completionPath: completionOffset != null ? path : null,
+ completionOffset: completionOffset,
+ performance: performance,
+ );
+ });
+ });
+ } catch (exception, stackTrace) {
+ var fileContentMap = <String, String>{};
+ for (var file in libraryFile.libraryFiles) {
+ var path = file.path;
+ fileContentMap[path] = _getFileContent(path);
+ }
+ throw CaughtExceptionWithFiles(
+ exception,
+ stackTrace,
+ fileContentMap,
+ );
+ }
+ });
+ UnitAnalysisResult fileResult = results[file];
+
+ return ResolvedUnitResultImpl(
+ contextObjects.analysisSession,
+ path,
+ file.uri,
+ file.exists,
+ content,
+ unit.lineInfo,
+ false, // isPart
+ fileResult.unit,
+ fileResult.errors,
+ );
});
}
@@ -603,19 +590,6 @@
}
}
- /// Run the [operation] that uses the library context, by locking it first,
- /// so that it is not reset while the operating is still running, and
- /// unlocking after the operation is done, so that the library context
- /// will be reset after some timeout.
- T _withLibraryContextReset<T>(T Function() operation) {
- _libraryContextReset.lock();
- try {
- return operation();
- } finally {
- _libraryContextReset.unlock();
- }
- }
-
static File _getFile(Folder directory, String name) {
Resource resource = directory.getChild(name);
if (resource is File && resource.exists) {
@@ -824,58 +798,3 @@
);
}
}
-
-/// The helper to reset the library context will be reset after the specified
-/// interval of inactivity. Keeping library context with loaded elements
-/// significantly improves performance of resolution, because we don't have
-/// to resynthesize elements, build export scopes for libraries, etc.
-/// However keeping elements that we don't need anymore, or when the user
-/// does not work with files, is wasteful.
-class _LibraryContextReset {
- final FileResolver fileResolver;
- final Duration resetTimeout;
-
- /// The lock level, incremented by [lock], and decremented by [unlock].
- /// The timeout timer is started when the level reaches zero.
- int _lockLevel = 0;
- Timer _timer;
-
- _LibraryContextReset({
- @required this.fileResolver,
- @required this.resetTimeout,
- });
-
- void dispose() {
- _stop();
- }
-
- /// Stop the timeout timer, and increment the lock level. The library context
- /// will be not reset until [unlock] will bring the lock level back to zero.
- void lock() {
- _stop();
- _lockLevel++;
- }
-
- /// Unlock the timer, the library context will be reset after the timeout.
- void unlock() {
- assert(_lockLevel > 0);
- _lockLevel--;
-
- if (_lockLevel == 0) {
- _stop();
- if (resetTimeout != null) {
- _timer = Timer(resetTimeout, () {
- _timer = null;
- fileResolver._resetContextObjects();
- });
- }
- }
- }
-
- void _stop() {
- if (_timer != null) {
- _timer.cancel();
- _timer = null;
- }
- }
-}
diff --git a/pkg/analyzer/test/src/dart/micro/file_resolution.dart b/pkg/analyzer/test/src/dart/micro/file_resolution.dart
index bc7b664..b03a488 100644
--- a/pkg/analyzer/test/src/dart/micro/file_resolution.dart
+++ b/pkg/analyzer/test/src/dart/micro/file_resolution.dart
@@ -53,7 +53,6 @@
getFileDigest: (String path) => _getDigest(path),
workspace: workspace,
prefetchFiles: null,
- libraryContextResetTimeout: null,
);
fileResolver.testView = FileResolverTestView();
}
diff --git a/pkg/dartdev/test/commands/fix_test.dart b/pkg/dartdev/test/commands/fix_test.dart
index 8881e4d..8371019 100644
--- a/pkg/dartdev/test/commands/fix_test.dart
+++ b/pkg/dartdev/test/commands/fix_test.dart
@@ -59,5 +59,41 @@
expect(result.stdout, contains('Fixed 1 file.'));
});
- // todo (pq): add tests for analyzer excludes, ignores, etc.
+ test('excludes', () {
+ p = project(
+ mainSrc: '''
+var x = "";
+''',
+ analysisOptions: '''
+analyzer:
+ exclude:
+ - lib/**
+linter:
+ rules:
+ - prefer_single_quotes
+''',
+ );
+ var result = p.runSync('fix', ['.'], workingDir: p.dirPath);
+ expect(result.exitCode, 0);
+ expect(result.stderr, isEmpty);
+ expect(result.stdout, contains('Nothing to fix!'));
+ });
+
+ test('ignores', () {
+ p = project(
+ mainSrc: '''
+// ignore: prefer_single_quotes
+var x = "";
+''',
+ analysisOptions: '''
+linter:
+ rules:
+ - prefer_single_quotes
+''',
+ );
+ var result = p.runSync('fix', ['.'], workingDir: p.dirPath);
+ expect(result.exitCode, 0);
+ expect(result.stderr, isEmpty);
+ expect(result.stdout, contains('Nothing to fix!'));
+ });
}
diff --git a/pkg/front_end/lib/src/api_prototype/compiler_options.dart b/pkg/front_end/lib/src/api_prototype/compiler_options.dart
index 28f961e..866ea26 100644
--- a/pkg/front_end/lib/src/api_prototype/compiler_options.dart
+++ b/pkg/front_end/lib/src/api_prototype/compiler_options.dart
@@ -433,10 +433,5 @@
}
}
}
- for (ExperimentalFlag flag in ExperimentalFlag.values) {
- assert(defaultExperimentalFlags.containsKey(flag),
- "No default value for $flag.");
- flags[flag] ??= defaultExperimentalFlags[flag];
- }
return flags;
}
diff --git a/runtime/vm/compiler/aot/precompiler.cc b/runtime/vm/compiler/aot/precompiler.cc
index 41933d8..9b963b6 100644
--- a/runtime/vm/compiler/aot/precompiler.cc
+++ b/runtime/vm/compiler/aot/precompiler.cc
@@ -1807,6 +1807,7 @@
AbstractType& type = AbstractType::Handle(Z);
Function& initializer_function = Function::Handle(Z);
+ SafepointWriteRwLocker ml(T, T->isolate_group()->program_lock());
for (intptr_t i = 0; i < libraries_.Length(); i++) {
lib ^= libraries_.At(i);
ClassDictionaryIterator it(lib, ClassDictionaryIterator::kIteratePrivate);
diff --git a/runtime/vm/object.cc b/runtime/vm/object.cc
index ba6f92c..ab6f5b5 100644
--- a/runtime/vm/object.cc
+++ b/runtime/vm/object.cc
@@ -1115,10 +1115,10 @@
// in the vm isolate. See special handling in Class::SuperClass().
cls = type_arguments_class_;
cls.set_interfaces(Object::empty_array());
- cls.SetFields(Object::empty_array());
{
Thread* thread = Thread::Current();
SafepointWriteRwLocker ml(thread, thread->isolate_group()->program_lock());
+ cls.SetFields(Object::empty_array());
cls.SetFunctions(Object::empty_array());
}
@@ -4354,6 +4354,9 @@
void Class::SetFields(const Array& value) const {
ASSERT(!value.IsNull());
#if defined(DEBUG)
+ Thread* thread = Thread::Current();
+ ASSERT(thread->IsMutatorThread());
+ ASSERT(thread->isolate_group()->program_lock()->IsCurrentThreadWriter());
// Verify that all the fields in the array have this class as owner.
Field& field = Field::Handle();
intptr_t len = value.Length();
@@ -4368,6 +4371,11 @@
}
void Class::AddField(const Field& field) const {
+#if defined(DEBUG)
+ Thread* thread = Thread::Current();
+ ASSERT(thread->IsMutatorThread());
+ ASSERT(thread->isolate_group()->program_lock()->IsCurrentThreadWriter());
+#endif
const Array& arr = Array::Handle(fields());
const Array& new_arr = Array::Handle(Array::Grow(arr, arr.Length() + 1));
new_arr.SetAt(arr.Length(), field);
@@ -4375,6 +4383,11 @@
}
void Class::AddFields(const GrowableArray<const Field*>& new_fields) const {
+#if defined(DEBUG)
+ Thread* thread = Thread::Current();
+ ASSERT(thread->IsMutatorThread());
+ ASSERT(thread->isolate_group()->program_lock()->IsCurrentThreadWriter());
+#endif
const intptr_t num_new_fields = new_fields.length();
if (num_new_fields == 0) return;
const Array& arr = Array::Handle(fields());
diff --git a/runtime/vm/object_test.cc b/runtime/vm/object_test.cc
index a9c2fcb..5cab797 100644
--- a/runtime/vm/object_test.cc
+++ b/runtime/vm/object_test.cc
@@ -207,8 +207,8 @@
SafepointWriteRwLocker ml(thread,
thread->isolate_group()->program_lock());
cls.SetFunctions(Array::empty_array());
+ cls.SetFields(fields);
}
- cls.SetFields(fields);
cls.Finalize();
instance = Instance::New(cls);
@@ -332,7 +332,10 @@
Object::dynamic_type(), TokenPosition::kMinSource,
TokenPosition::kMinSource));
one_fields.SetAt(0, field);
- one_field_class.SetFields(one_fields);
+ {
+ SafepointWriteRwLocker ml(thread, thread->isolate_group()->program_lock());
+ one_field_class.SetFields(one_fields);
+ }
one_field_class.Finalize();
intptr_t header_size = sizeof(ObjectLayout);
EXPECT_EQ(Utils::RoundUp((header_size + (1 * kWordSize)), kObjectAlignment),
diff --git a/tests/co19/co19-runtime.status b/tests/co19/co19-runtime.status
index 0a91266..2fdfc3e 100644
--- a/tests/co19/co19-runtime.status
+++ b/tests/co19/co19-runtime.status
@@ -12,8 +12,29 @@
[ $compiler != dart2js && $runtime != none && $runtime != vm && !$checked ]
LibTest/async/Future/catchError_A03_t05: RuntimeError
-[ $mode == debug && $nnbd != legacy && $runtime == dart_precompiled ]
-LibTest/collection/ListMixin/ListMixin_class_A01_t05: SkipSlow # Issue 43614
+[ $mode == debug && $runtime == dart_precompiled ]
+LibTest/collection/ListBase/ListBase_class_A01_t03: SkipSlow # Very slow compilation in debug mode.
+LibTest/collection/ListBase/ListBase_class_A01_t04: SkipSlow # Very slow compilation in debug mode.
+LibTest/collection/ListBase/ListBase_class_A01_t05: SkipSlow # Very slow compilation in debug mode.
+LibTest/collection/ListBase/ListBase_class_A01_t06: SkipSlow # Very slow compilation in debug mode.
+LibTest/collection/ListMixin/ListMixin_class_A01_t03: SkipSlow # Very slow compilation in debug mode.
+LibTest/collection/ListMixin/ListMixin_class_A01_t04: SkipSlow # Very slow compilation in debug mode.
+LibTest/collection/ListMixin/ListMixin_class_A01_t05: SkipSlow # Very slow compilation in debug mode.
+LibTest/collection/ListMixin/ListMixin_class_A01_t06: SkipSlow # Very slow compilation in debug mode.
+LibTest/core/List/List_all_t03: SkipSlow # Very slow compilation in debug mode.
+LibTest/core/List/List_all_t04: SkipSlow # Very slow compilation in debug mode.
+LibTest/core/List/List_all_t05: SkipSlow # Very slow compilation in debug mode.
+LibTest/core/List/List_all_t06: SkipSlow # Very slow compilation in debug mode.
+
+[ $arch == simarm || $arch == simarm64 ]
+LibTest/collection/ListBase/ListBase_class_A01_t01: SkipSlow # Very slow on sim* architectures.
+LibTest/collection/ListBase/ListBase_class_A01_t04: SkipSlow # Very slow on sim* architectures.
+LibTest/collection/ListBase/ListBase_class_A01_t05: SkipSlow # Very slow on sim* architectures.
+LibTest/collection/ListBase/ListBase_class_A01_t06: SkipSlow # Very slow on sim* architectures.
+LibTest/collection/ListMixin/ListMixin_class_A01_t01: SkipSlow # Very slow on sim* architectures.
+LibTest/collection/ListMixin/ListMixin_class_A01_t04: SkipSlow # Very slow on sim* architectures.
+LibTest/collection/ListMixin/ListMixin_class_A01_t05: SkipSlow # Very slow on sim* architectures.
+LibTest/collection/ListMixin/ListMixin_class_A01_t06: SkipSlow # Very slow on sim* architectures.
[ $compiler == fasta || $runtime == dart_precompiled || $runtime == vm ]
LibTest/html/*: SkipByDesign # dart:html not supported on VM.
diff --git a/tests/co19_2/co19_2-runtime.status b/tests/co19_2/co19_2-runtime.status
index c3ddffa..26ee4d3 100644
--- a/tests/co19_2/co19_2-runtime.status
+++ b/tests/co19_2/co19_2-runtime.status
@@ -9,5 +9,25 @@
[ $compiler != dart2js && $runtime != none && $runtime != vm && !$checked ]
LibTest/async/Future/catchError_A03_t05: RuntimeError
+[ $mode == debug && $runtime == dart_precompiled ]
+LibTest/collection/ListBase/ListBase_class_A01_t03: SkipSlow # Very slow compilation in debug mode.
+LibTest/collection/ListBase/ListBase_class_A01_t04: SkipSlow # Very slow compilation in debug mode.
+LibTest/collection/ListBase/ListBase_class_A01_t05: SkipSlow # Very slow compilation in debug mode.
+LibTest/collection/ListBase/ListBase_class_A01_t06: SkipSlow # Very slow compilation in debug mode.
+LibTest/collection/ListMixin/ListMixin_class_A01_t03: SkipSlow # Very slow compilation in debug mode.
+LibTest/collection/ListMixin/ListMixin_class_A01_t04: SkipSlow # Very slow compilation in debug mode.
+LibTest/collection/ListMixin/ListMixin_class_A01_t05: SkipSlow # Very slow compilation in debug mode.
+LibTest/collection/ListMixin/ListMixin_class_A01_t06: SkipSlow # Very slow compilation in debug mode.
+
+[ $arch == simarm || $arch == simarm64 ]
+LibTest/collection/ListBase/ListBase_class_A01_t01: SkipSlow # Very slow on sim* architectures.
+LibTest/collection/ListBase/ListBase_class_A01_t04: SkipSlow # Very slow on sim* architectures.
+LibTest/collection/ListBase/ListBase_class_A01_t05: SkipSlow # Very slow on sim* architectures.
+LibTest/collection/ListBase/ListBase_class_A01_t06: SkipSlow # Very slow on sim* architectures.
+LibTest/collection/ListMixin/ListMixin_class_A01_t01: SkipSlow # Very slow on sim* architectures.
+LibTest/collection/ListMixin/ListMixin_class_A01_t04: SkipSlow # Very slow on sim* architectures.
+LibTest/collection/ListMixin/ListMixin_class_A01_t05: SkipSlow # Very slow on sim* architectures.
+LibTest/collection/ListMixin/ListMixin_class_A01_t06: SkipSlow # Very slow on sim* architectures.
+
[ $compiler == fasta || $runtime == dart_precompiled || $runtime == vm ]
LibTest/html/*: SkipByDesign # dart:html not supported on VM.
diff --git a/tools/VERSION b/tools/VERSION
index 6dfe295..f71a9a1 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
MAJOR 2
MINOR 11
PATCH 0
-PRERELEASE 245
+PRERELEASE 246
PRERELEASE_PATCH 0
\ No newline at end of file