Version 2.18.0-209.0.dev

Merge commit '651db75ff4ac0e11e5f0f6414c26a75c4ae50dde' into 'dev'
diff --git a/DEPS b/DEPS
index e2d546a..84c331d 100644
--- a/DEPS
+++ b/DEPS
@@ -75,6 +75,9 @@
   "gperftools_revision": "180bfa10d7cb38e8b3784d60943d50e8fcef0dcb",
 
   # Revisions of /third_party/* dependencies.
+  # Note that putting an EOL comment after a dependency below will prevent the
+  # 'tools/rev_sdk_deps.dart' tool from attempting to rev to a newer revision.
+
   "args_rev": "73e8d3b55cbedc9765f8e266f3422d8914f8e62a",
   "async_rev": "f3ed5f690e2ec9dbe1bfc5184705575b4f6480e5",
   "bazel_worker_rev": "9710de6c9c70b1b583183db9d9721ba64e5a16fe",
@@ -103,11 +106,11 @@
   #   and land the review.
   #
   # For more details, see https://github.com/dart-lang/sdk/issues/30164.
-  "dart_style_rev": "d7b73536a8079331c888b7da539b80e6825270ea",
+  "dart_style_rev": "d7b73536a8079331c888b7da539b80e6825270ea", # manually rev'd
 
   "dartdoc_rev": "58348a98b992ce99b95d23131b67227bdb2b4875",
   "devtools_rev": "51ac983d2db7eb19b3ce5956cb70b769d74fe784",
-  "ffi_rev": "0c8364a728cfe4e4ba859c53b99d56b3dbe3add4", # dart-lang/ffi/issues/148
+  "ffi_rev": "18b2b549d55009ff594600b04705ff6161681e07",
   "file_rev": "0132eeedea2933513bf230513a766a8baeab0c4f",
   "fixnum_rev": "164712f6547cdfb2709b752188186baf31fd1730",
   "glob_rev": "e10eb2407c58427144004458ef85c9bbf7286e56",
@@ -119,7 +122,7 @@
   "intl_rev": "e9b573679de5e703d89a242b9dca331c772979ef",
   "jinja2_rev": "2222b31554f03e62600cd7e383376a7c187967a1",
   "json_rpc_2_rev": "2de9a1f9821807fa2c85fd48e2f70b9cbcddcb67",
-  "linter_rev": "1ddc70948d94f2449fec69a95e3ceb7b6b6c8348", # 1.25.0
+  "linter_rev": "1ddc70948d94f2449fec69a95e3ceb7b6b6c8348", # manually rev'd
   "lints_rev": "8294e5648ab49474541527e2911e72e4c5aefe55",
   "logging_rev": "f6979e3bc3b6e1847a08335b7eb6304e18986195",
   "markdown_rev": "e3f4bd28c9e61b522f75f291d4d6cfcfeccd83ee", # b/236358256
@@ -133,7 +136,7 @@
   "ply_rev": "604b32590ffad5cbb82e4afef1d305512d06ae93",
   "pool_rev": "c40cc32eabecb9d60f1045d1403108d968805f9a",
   "protobuf_rev": "3149f6f2d323e11dbcc983b7ac8b3b9e9d686293",
-  "pub_rev": "9bf4289d6fd5d6872a8929d6312bbd7098f3ea9c",
+  "pub_rev": "9bf4289d6fd5d6872a8929d6312bbd7098f3ea9c", # manually rev'd
   "pub_semver_rev": "5c0b4bfd5ca57fe16f1319c581dc8c882e9b8cb2",
   "root_certificates_rev": "692f6d6488af68e0121317a9c2c9eb393eb0ee50",
   "rust_revision": "b7856f695d65a8ebc846754f97d15814bcb1c244",
diff --git a/tests/ffi/data_not_asan_test.dart b/tests/ffi/data_not_asan_test.dart
index b791d71..8ed4bf6 100644
--- a/tests/ffi/data_not_asan_test.dart
+++ b/tests/ffi/data_not_asan_test.dart
@@ -20,11 +20,11 @@
 void testPointerAllocateTooLarge() {
   // Try to allocate something that doesn't fit in 64 bit address space.
   int maxInt = 9223372036854775807; // 2^63 - 1
-  Expect.throws(() => calloc<Int64>(maxInt));
+  Expect.throws(() => calloc<Int8>(maxInt));
 
   // Try to allocate almost the full 64 bit address space.
   int maxInt1_8 = 1152921504606846975; // 2^60 -1
-  Expect.throws(() => calloc<Int64>(maxInt1_8));
+  Expect.throws(() => calloc<Int8>(maxInt1_8));
 }
 
 void testPointerAllocateNegative() {
diff --git a/tests/ffi_2/data_not_asan_test.dart b/tests/ffi_2/data_not_asan_test.dart
index 8ac3eba..f69d126 100644
--- a/tests/ffi_2/data_not_asan_test.dart
+++ b/tests/ffi_2/data_not_asan_test.dart
@@ -22,11 +22,11 @@
 void testPointerAllocateTooLarge() {
   // Try to allocate something that doesn't fit in 64 bit address space.
   int maxInt = 9223372036854775807; // 2^63 - 1
-  Expect.throws(() => calloc<Int64>(maxInt));
+  Expect.throws(() => calloc<Int8>(maxInt));
 
   // Try to allocate almost the full 64 bit address space.
   int maxInt1_8 = 1152921504606846975; // 2^60 -1
-  Expect.throws(() => calloc<Int64>(maxInt1_8));
+  Expect.throws(() => calloc<Int8>(maxInt1_8));
 }
 
 void testPointerAllocateNegative() {
diff --git a/tools/VERSION b/tools/VERSION
index 4b92fd0..90241e9 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 208
+PRERELEASE 209
 PRERELEASE_PATCH 0
\ No newline at end of file
diff --git a/tools/rev_sdk_deps.dart b/tools/rev_sdk_deps.dart
index 6897ae2..47a0582 100644
--- a/tools/rev_sdk_deps.dart
+++ b/tools/rev_sdk_deps.dart
@@ -3,15 +3,6 @@
 
 import 'package:path/path.dart' as path;
 
-// These packages are effectively pinned - they often require manual work when
-// rolling.
-// TODO(devoncarew): Keep this metadata in the DEPS file.
-const Set<String> pinned = {
-  'dart_style',
-  'linter',
-  'pub',
-};
-
 void main(List<String> args) async {
   // Validate we're running from the repo root.
   if (!File('README.dart-sdk').existsSync() || !File('DEPS').existsSync()) {
@@ -22,7 +13,14 @@
   final gclient = GClientHelper();
 
   final deps = await gclient.getPackageDependencies();
-  print('${deps.length} non-pinned package dependencies found.');
+  print('${deps.length} package dependencies found.');
+
+  // Remove pinned deps.
+  final pinnedDeps = calculatePinnedDeps();
+  deps.removeWhere((dep) => pinnedDeps.contains(dep.name));
+
+  print('Not attempting to move forward the revisions for: '
+      '${pinnedDeps.toList().join(', ')}.');
   print('');
 
   deps.sort((a, b) => a.name.compareTo(b.name));
@@ -51,6 +49,19 @@
   }
 }
 
+// By convention, pinned deps are deps with an eol comment.
+Set<String> calculatePinnedDeps() {
+  final packageRevision = RegExp(r'"(\w+)_rev":');
+
+  // "markdown_rev": "e3f4bd28c9...cfeccd83ee", # b/236358256
+  var depsFile = File('DEPS');
+  return depsFile
+      .readAsLinesSync()
+      .where((line) => packageRevision.hasMatch(line) && line.contains('", #'))
+      .map((line) => packageRevision.firstMatch(line)!.group(1)!)
+      .toSet();
+}
+
 class GitHelper {
   final String dir;
 
@@ -115,8 +126,6 @@
       );
     }).where((PackageDependency deps) {
       return deps.entry.startsWith('sdk/third_party/pkg/');
-    }).where((PackageDependency deps) {
-      return !pinned.contains(deps.name);
     }).toList();
   }