Version 2.18.0-146.0.dev

Merge commit 'd18798a6de514de1379a872f4ab312a66ac361f8' into 'dev'
diff --git a/DEPS b/DEPS
index f9f7f1b..c94237f 100644
--- a/DEPS
+++ b/DEPS
@@ -106,7 +106,7 @@
   # For more details, see https://github.com/dart-lang/sdk/issues/30164.
   "dart_style_rev": "d7b73536a8079331c888b7da539b80e6825270ea",
 
-  "dartdoc_rev": "cf0685a2d1ce7b698a5e155448d337b86381318a",
+  "dartdoc_rev": "c58f21042ebd95014c5426a2f34411876685ecc7",
   "devtools_rev": "3c16b8d73120e46958982d94215d499793b972eb",
   "ffi_rev": "0c8364a728cfe4e4ba859c53b99d56b3dbe3add4",
   "file_rev": "0132eeedea2933513bf230513a766a8baeab0c4f",
diff --git a/pkg/wasm_builder/lib/src/types.dart b/pkg/wasm_builder/lib/src/types.dart
index ecc8b1e..84494d3 100644
--- a/pkg/wasm_builder/lib/src/types.dart
+++ b/pkg/wasm_builder/lib/src/types.dart
@@ -201,10 +201,6 @@
   const RefType.i31({bool nullable = I31HeapType.defaultNullability})
       : this._(HeapType.i31, nullable);
 
-  /// A (possibly nullable) reference to the `extern` heap type.
-  const RefType.extern({bool nullable = ExternHeapType.defaultNullability})
-      : this._(HeapType.extern, nullable);
-
   /// A (possibly nullable) reference to a custom heap type.
   RefType.def(DefType defType, {required bool nullable})
       : this(defType, nullable: nullable);
@@ -266,9 +262,6 @@
   /// The `i31` heap type.
   static const i31 = I31HeapType._();
 
-  /// The `extern` heap type.
-  static const extern = ExternHeapType._();
-
   /// Whether this heap type is nullable by default, i.e. when written with the
   /// -`ref` shorthand. A `null` value here means the heap type has no default
   /// nullability, so the nullability of a reference has to be specified
@@ -295,7 +288,7 @@
   bool isSubtypeOf(HeapType other) => other == HeapType.any;
 
   @override
-  void serialize(Serializer s) => s.writeByte(0x6E);
+  void serialize(Serializer s) => s.writeByte(0x6F);
 
   @override
   String toString() => "any";
@@ -381,26 +374,6 @@
   String toString() => "i31";
 }
 
-/// The `extern` heap type.
-class ExternHeapType extends HeapType {
-  const ExternHeapType._();
-
-  static const defaultNullability = true;
-
-  @override
-  bool? get nullableByDefault => defaultNullability;
-
-  @override
-  bool isSubtypeOf(HeapType other) =>
-      other == HeapType.any || other == HeapType.extern;
-
-  @override
-  void serialize(Serializer s) => s.writeByte(0x6F);
-
-  @override
-  String toString() => "extern";
-}
-
 /// A custom heap type.
 abstract class DefType extends HeapType {
   int? _index;
diff --git a/runtime/tests/vm/dart/isolates/fast_object_copy_timeline_test.dart b/runtime/tests/vm/dart/isolates/fast_object_copy_timeline_test.dart
index 72b4932..f3b44b1 100644
--- a/runtime/tests/vm/dart/isolates/fast_object_copy_timeline_test.dart
+++ b/runtime/tests/vm/dart/isolates/fast_object_copy_timeline_test.dart
@@ -15,8 +15,10 @@
 import '../timeline_utils.dart';
 
 final int wordSize = sizeOf<IntPtr>();
-final bool useCompressedPointers =
-    wordSize == 8 && (Platform.isAndroid || Platform.isIOS);
+final bool useCompressedPointers = wordSize == 8 &&
+    (Platform.isAndroid ||
+        Platform.isIOS ||
+        Platform.executable.contains('64C'));
 
 final int kAllocationSize = 2 * wordSize;
 final int headerSize = wordSize;
@@ -76,32 +78,29 @@
     List<TimelineEvent> events, String isolateId) {
   final copyOperations = <ObjectCopyOperation>[];
 
-  int? startTs = null;
-  int? startTts = null;
+  TimelineEvent? start = null;
 
   for (final e in events) {
     if (e.isolateId != isolateId) continue;
     if (e.name != 'CopyMutableObjectGraph') continue;
 
-    if (startTts != null) {
+    if (start != null) {
       if (!e.isEnd) throw 'Missing end of copy event';
 
-      final us = e.ts - startTs!;
-      final threadUs = e.tts! - startTts;
+      final us = e.ts - start.ts;
+      final threadUs = e.tts != null ? (e.tts! - start.tts!) : 0;
       copyOperations.add(ObjectCopyOperation(
           us,
           threadUs,
           int.parse(e.args['AllocatedBytes']!),
           int.parse(e.args['CopiedObjects']!)));
 
-      startTs = null;
-      startTts = null;
+      start = null;
       continue;
     }
 
     if (!e.isStart) throw 'Expected end of copy event';
-    startTs = e.ts;
-    startTts = e.tts;
+    start = e;
   }
   return copyOperations;
 }
diff --git a/runtime/tests/vm/dart_2/isolates/fast_object_copy_timeline_test.dart b/runtime/tests/vm/dart_2/isolates/fast_object_copy_timeline_test.dart
index 9030c78..b7f3c9e 100644
--- a/runtime/tests/vm/dart_2/isolates/fast_object_copy_timeline_test.dart
+++ b/runtime/tests/vm/dart_2/isolates/fast_object_copy_timeline_test.dart
@@ -17,8 +17,10 @@
 import '../timeline_utils.dart';
 
 final int wordSize = sizeOf<IntPtr>();
-final bool useCompressedPointers =
-    wordSize == 8 && (Platform.isAndroid || Platform.isIOS);
+final bool useCompressedPointers = wordSize == 8 &&
+    (Platform.isAndroid ||
+        Platform.isIOS ||
+        Platform.executable.contains('64C'));
 
 final int kAllocationSize = 2 * wordSize;
 final int headerSize = wordSize;
@@ -78,32 +80,29 @@
     List<TimelineEvent> events, String isolateId) {
   final copyOperations = <ObjectCopyOperation>[];
 
-  int startTs = null;
-  int startTts = null;
+  TimelineEvent start = null;
 
   for (final e in events) {
     if (e.isolateId != isolateId) continue;
     if (e.name != 'CopyMutableObjectGraph') continue;
 
-    if (startTts != null) {
+    if (start != null) {
       if (!e.isEnd) throw 'Missing end of copy event';
 
-      final us = e.ts - startTs;
-      final threadUs = e.tts - startTts;
+      final us = e.ts - start.ts;
+      final threadUs = e.tts != null ? (e.tts - start.tts) : 0;
       copyOperations.add(ObjectCopyOperation(
           us,
           threadUs,
           int.parse(e.args['AllocatedBytes']),
           int.parse(e.args['CopiedObjects'])));
 
-      startTs = null;
-      startTts = null;
+      start = null;
       continue;
     }
 
     if (!e.isStart) throw 'Expected end of copy event';
-    startTs = e.ts;
-    startTts = e.tts;
+    start = e;
   }
   return copyOperations;
 }
diff --git a/tools/VERSION b/tools/VERSION
index e0145a1..df3ca95 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 18
 PATCH 0
-PRERELEASE 145
+PRERELEASE 146
 PRERELEASE_PATCH 0
\ No newline at end of file