Version 2.16.0-93.0.dev

Merge commit '8d412e80e1b513c49b156c938f9e2eaf4e1d0f0f' into 'dev'
diff --git a/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart b/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
index c2d8833..7ed981d 100644
--- a/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
+++ b/pkg/analysis_server/test/services/completion/dart/arglist_contributor_test.dart
@@ -6,7 +6,6 @@
 import 'package:analysis_server/src/services/completion/dart/arglist_contributor.dart';
 import 'package:analysis_server/src/services/completion/dart/completion_manager.dart';
 import 'package:analysis_server/src/services/completion/dart/suggestion_builder.dart';
-import 'package:analyzer/src/dart/analysis/experiments.dart';
 import 'package:analyzer_plugin/protocol/protocol_common.dart';
 import 'package:test/test.dart';
 import 'package:test_reflective_loader/test_reflective_loader.dart';
@@ -76,7 +75,6 @@
   /// the only suggestions.
   void assertSuggestArgumentsAndTypes(
       {required Map<String, String> namedArgumentsWithTypes,
-      List<int> requiredParamIndices = const <int>[],
       bool includeColon = true,
       bool includeComma = false}) {
     var expected = <CompletionSuggestion>[];
@@ -122,141 +120,7 @@
 @reflectiveTest
 class ArgListContributorTest extends DartCompletionContributorTest
     with ArgListContributorMixin {
-  Future<void> test_Annotation_imported_constructor_named_param() async {
-    addSource('$testPackageLibPath/a.dart', '''
-library libA; class A { const A({int one, String two: 'defaultValue'}); }''');
-    addTestSource('import "a.dart"; @A(^) main() { }');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(
-        namedArgumentsWithTypes: {'one': 'int', 'two': 'String'});
-  }
-
-  Future<void> test_Annotation_importedConstructor_prefixed() async {
-    addSource('$testPackageLibPath/a.dart', '''
-class A {
-  const A({int value});
-}
-''');
-    addTestSource('''
-import "a.dart" as p;
-@p.A(^)
-main() {}
-''');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'value': 'int'});
-  }
-
-  Future<void> test_Annotation_local_constructor_named_param() async {
-    addTestSource('''
-class A { const A({int one, String two: 'defaultValue'}); }
-@A(^) main() { }''');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(
-        namedArgumentsWithTypes: {'one': 'int', 'two': 'String'});
-  }
-
-  @failingTest
-  Future<void> test_Annotation_local_constructor_named_param_10() async {
-    addTestSource('''
-class A { const A({int one, String two: 'defaultValue'}); }
-@A(two: '2' ^) main() { }''');
-    await computeSuggestions();
-    assertSuggestions([', one: ']);
-  }
-
-  Future<void> test_Annotation_local_constructor_named_param_11() async {
-    addTestSource('''
-class A { const A({int one, String two: 'defaultValue'}); }
-@A(two: '2', ^) main() { }''');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
-  }
-
-  Future<void> test_Annotation_local_constructor_named_param_12() async {
-    addTestSource('''
-class A { const A(int one, int two, int three, {int four, String five:
-  'defaultValue'}); }
-@A(1, ^, 3) main() { }''');
-    await computeSuggestions();
-    assertSuggestions(['four: ', 'five: ']);
-  }
-
-  Future<void> test_Annotation_local_constructor_named_param_2() async {
-    addTestSource('''
-class A { const A({int one, String two: 'defaultValue'}); }
-@A(^ two: '2') main() { }''');
-    await computeSuggestions();
-    assertSuggestions(['one: ,']);
-  }
-
-  Future<void> test_Annotation_local_constructor_named_param_3() async {
-    addTestSource('''
-class A { const A({int one, String two: 'defaultValue'}); }
-@A(^two: '2') main() { }''');
-    await computeSuggestions();
-    assertSuggestions(['one: ,']);
-  }
-
-  Future<void> test_Annotation_local_constructor_named_param_4() async {
-    addTestSource('''
-class A { const A({int one, String two: 'defaultValue'}); }
-@A(^, two: '2') main() { }''');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
-  }
-
-  Future<void> test_Annotation_local_constructor_named_param_5() async {
-    addTestSource('''
-class A { const A({int one, String two: 'defaultValue'}); }
-@A(^ , two: '2') main() { }''');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
-  }
-
-  Future<void> test_Annotation_local_constructor_named_param_6() async {
-    addTestSource('''
-class A { const A(int zero, {int one, String two: 'defaultValue'}); }
-@A(0, ^, two: '2') main() { }''');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
-  }
-
-  Future<void> test_Annotation_local_constructor_named_param_7() async {
-    addTestSource('''
-class A { const A(int zero, {int one, String two: 'defaultValue'}); }
-@A(0, ^ two: '2') main() { }''');
-    await computeSuggestions();
-    assertSuggestions(['one: ,']);
-  }
-
-  Future<void> test_Annotation_local_constructor_named_param_8() async {
-    addTestSource('''
-class A { const A(int zero, {int one, String two: 'defaultValue'}); }
-@A(0, ^two: '2') main() { }''');
-    await computeSuggestions();
-    assertSuggestions(['one: ,']);
-  }
-
-  @failingTest
-  Future<void> test_Annotation_local_constructor_named_param_9() async {
-    addTestSource('''
-class A { const A({int one, String two: 'defaultValue'}); }
-@A(two: '2'^) main() { }''');
-    await computeSuggestions();
-    assertSuggestions([', one: ']);
-  }
-
-  Future<void> test_Annotation_local_constructor_named_param_negative() async {
-    addTestSource('''
-// @dart = 2.15
-class A { const A(int one, int two, int three, {int four, String five:
-  'defaultValue'}); }
-@A(1, ^, 3) main() { }''');
-    await computeSuggestions();
-    assertNoSuggestions();
-  }
-
-  Future<void> test_ArgumentList_closureFunction_namedParameter() async {
+  Future<void> test_closure_namedArgument() async {
     addTestSource(r'''
 void f({void Function(int a, String b) closure}) {}
 
@@ -280,8 +144,7 @@
     );
   }
 
-  Future<void>
-      test_ArgumentList_closureFunction_namedParameter_hasComma() async {
+  Future<void> test_closure_namedArgument_hasComma() async {
     addTestSource(r'''
 void f({void Function(int a, String b) closure}) {}
 
@@ -307,51 +170,7 @@
     );
   }
 
-  /// todo (pq): implement positional functional parameters
-  @failingTest
-  Future<void> test_ArgumentList_closureFunction_positionalParameter() async {
-    addTestSource(r'''
-void f(void Function(int a, int b) closure) {}
-
-void main() {
-  f(^);
-}
-''');
-    await computeSuggestions();
-
-    assertSuggest(
-      '(a, b, c) => ,',
-      selectionOffset: 13,
-    );
-  }
-
-  Future<void> test_ArgumentList_closureMethod_namedParameter() async {
-    addTestSource(r'''
-class C {
-  void f({void Function(int a, String b) closure}) {}
-
-  void main() {
-    f(closure: ^);
-  }
-}
-''');
-    await computeSuggestions();
-
-    assertSuggest(
-      '(a, b) => ,',
-      selectionOffset: 10,
-    );
-
-    assertSuggest(
-      '''
-(a, b) {
-${' ' * 6}
-${' ' * 4}},''',
-      selectionOffset: 15,
-    );
-  }
-
-  Future<void> test_ArgumentList_closureParam() async {
+  Future<void> test_closure_namedArgument_parameters_optionalNamed() async {
     addTestSource(r'''
 void f({void Function(int a, {int b, int c}) closure}) {}
 
@@ -367,23 +186,8 @@
     );
   }
 
-  Future<void> test_ArgumentList_closureParameterOptionalNamed() async {
-    addTestSource(r'''
-void f({void Function(int a, {int b, int c}) closure}) {}
-
-void main() {
-  f(closure: ^);
-}
-''');
-    await computeSuggestions();
-
-    assertSuggest(
-      '(a, {b, c}) => ,',
-      selectionOffset: 15,
-    );
-  }
-
-  Future<void> test_ArgumentList_closureParameterOptionalPositional() async {
+  Future<void>
+      test_closure_namedArgument_parameters_optionalPositional() async {
     addTestSource(r'''
 void f({void Function(int a, [int b, int c]) closure]) {}
 
@@ -399,401 +203,25 @@
     );
   }
 
-  Future<void> test_ArgumentList_Flutter_InstanceCreationExpression_0() async {
-    writeTestPackageConfig(flutter: true);
+  /// todo (pq): implement positional functional parameters
+  @failingTest
+  Future<void> test_closure_positionalArgument() async {
+    addTestSource(r'''
+void f(void Function(int a, int b) closure) {}
 
-    addTestSource('''
-import 'package:flutter/widgets.dart';
-
-build() => new Row(
-    ^
-  );
-''');
-
-    await computeSuggestions();
-
-    assertSuggest('children: [],',
-        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
-        defaultArgListString: null,
-        selectionOffset: 11,
-        defaultArgumentListTextRanges: null);
-  }
-
-  Future<void> test_ArgumentList_Flutter_InstanceCreationExpression_01() async {
-    writeTestPackageConfig(flutter: true);
-
-    addTestSource('''
-import 'package:flutter/material.dart';
-
-  build() => new Scaffold(
-        appBar: new AppBar(
-          ^
-        ),
-  );
-''');
-
-    await computeSuggestions();
-
-    assertSuggest('backgroundColor: ,',
-        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
-        defaultArgListString: null, // No default values.
-        selectionOffset: 17);
-  }
-
-  Future<void> test_ArgumentList_Flutter_InstanceCreationExpression_1() async {
-    writeTestPackageConfig(flutter: true);
-
-    addTestSource('''
-import 'package:flutter/material.dart';
-
-build() => new Row(
-    key: null,
-    ^
-  );
-''');
-
-    await computeSuggestions();
-
-    assertSuggest('children: [],',
-        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
-        defaultArgListString: null,
-        selectionOffset: 11,
-        defaultArgumentListTextRanges: null);
-  }
-
-  Future<void> test_ArgumentList_Flutter_InstanceCreationExpression_2() async {
-    writeTestPackageConfig(flutter: true);
-
-    addTestSource('''
-import 'package:flutter/material.dart';
-
-build() => new Row(
-    ^
-    key: null,
-  );
-''');
-
-    await computeSuggestions();
-
-    assertSuggest('children: [],',
-        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
-        defaultArgListString: null,
-        selectionOffset: 11,
-        defaultArgumentListTextRanges: null);
-  }
-
-  Future<void>
-      test_ArgumentList_Flutter_InstanceCreationExpression_children_dynamic() async {
-    // Ensure we don't generate unneeded <dynamic> param if a future API doesn't
-    // type it's children.
-    writeTestPackageConfig(flutter: true);
-
-    addTestSource('''
-import 'package:flutter/material.dart';
-
-build() => new Container(
-    child: new DynamicRow(^);
-  );
-
-class DynamicRow extends Widget {
-  DynamicRow({List children: null});
+void main() {
+  f(^);
 }
 ''');
-
     await computeSuggestions();
 
-    assertSuggest('children: [],',
-        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
-        defaultArgListString: null,
-        selectionOffset: 11,
-        defaultArgumentListTextRanges: null);
+    assertSuggest(
+      '(a, b, c) => ,',
+      selectionOffset: 13,
+    );
   }
 
-  Future<void>
-      test_ArgumentList_Flutter_InstanceCreationExpression_children_Map() async {
-    // Ensure we don't generate Map params for a future API
-    writeTestPackageConfig(flutter: true);
-
-    addTestSource('''
-import 'package:flutter/material.dart';
-
-build() => new Container(
-    child: new MapRow(^);
-  );
-
-class MapRow extends Widget {
-  MapRow({Map<Object, Object> children: null});
-}
-''');
-
-    await computeSuggestions();
-
-    assertSuggest('children: ,',
-        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
-        selectionOffset: 10,
-        defaultArgListString: null);
-  }
-
-  Future<void>
-      test_ArgumentList_Flutter_InstanceCreationExpression_slivers() async {
-    writeTestPackageConfig(flutter: true);
-
-    addTestSource('''
-import 'package:flutter/material.dart';
-
-build() => new CustomScrollView(
-    ^
-  );
-
-class CustomScrollView extends Widget {
-  CustomScrollView({List<Widget> slivers});
-}
-''');
-
-    await computeSuggestions();
-
-    assertSuggest('slivers: [],',
-        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
-        defaultArgListString: null,
-        selectionOffset: 10,
-        defaultArgumentListTextRanges: null);
-  }
-
-  Future<void> test_ArgumentList_Flutter_MethodExpression_children() async {
-    // Ensure we don't generate params for a method call
-    // TODO(brianwilkerson) This test has been changed so that it no longer has
-    // anything to do with Flutter (by moving the declaration of `foo` out of
-    // the 'material' library). Determine whether the test is still valid.
-    writeTestPackageConfig(flutter: true);
-
-    addTestSource('''
-import 'package:flutter/material.dart';
-
-main() {
-  foo(^);
-}
-
-foo({String children}) {}
-''');
-
-    await computeSuggestions();
-
-    assertSuggest('children: ',
-        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
-        defaultArgListString: null);
-  }
-
-  Future<void> test_ArgumentList_getter() async {
-    addTestSource('class A {int get foo => 7; main() {foo(^)}');
-    await computeSuggestions();
-    assertNoSuggestions();
-  }
-
-  Future<void> test_ArgumentList_imported_constructor_named_param() async {
-    // ArgumentList  InstanceCreationExpression  ExpressionStatement
-    addSource(
-        '$testPackageLibPath/a.dart', 'library libA; class A{A({int one}); }');
-    addTestSource('import "a.dart"; main() { new A(^);}');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
-  }
-
-  Future<void> test_ArgumentList_imported_constructor_named_param2() async {
-    // ArgumentList  InstanceCreationExpression  ExpressionStatement
-    addSource('$testPackageLibPath/a.dart',
-        'library libA; class A{A.foo({int one}); }');
-    addTestSource('import "a.dart"; main() { new A.foo(^);}');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
-  }
-
-  Future<void>
-      test_ArgumentList_imported_constructor_named_typed_param() async {
-    // ArgumentList  InstanceCreationExpression  VariableDeclaration
-    addSource('$testPackageLibPath/a.dart',
-        'library libA; class A { A({int i, String s, d}) {} }}');
-    addTestSource('import "a.dart"; main() { var a = new A(^);}');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(
-        namedArgumentsWithTypes: {'i': 'int', 's': 'String', 'd': 'dynamic'});
-  }
-
-  Future<void> test_ArgumentList_imported_factory_named_param() async {
-    // ArgumentList  InstanceCreationExpression  ExpressionStatement
-    addSource('$testPackageLibPath/a.dart',
-        'library libA; class A{factory A({int one}) => throw 0;}');
-    addTestSource('import "a.dart"; main() { new A(^);}');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
-  }
-
-  Future<void> test_ArgumentList_imported_factory_named_param2() async {
-    // ArgumentList  InstanceCreationExpression  ExpressionStatement
-    addSource('$testPackageLibPath/a.dart',
-        'library libA; abstract class A{factory A.foo({int one});}');
-    addTestSource('import "a.dart"; main() { new A.foo(^);}');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
-  }
-
-  Future<void> test_ArgumentList_imported_factory_named_typed_param() async {
-    // ArgumentList  InstanceCreationExpression  VariableDeclaration
-    addSource('$testPackageLibPath/a.dart',
-        'library libA; class A {factory A({int i, String s, d}) {} }}');
-    addTestSource('import "a.dart"; main() { var a = new A(^);}');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(
-        namedArgumentsWithTypes: {'i': 'int', 's': 'String', 'd': 'dynamic'});
-  }
-
-  Future<void> test_ArgumentList_imported_function_0() async {
-    // ArgumentList  MethodInvocation  ExpressionStatement  Block
-    addSource('$testPackageLibPath/a.dart', '''
-      library A;
-      bool hasLength(int expected) { }
-      expect() { }
-      void baz() { }''');
-    addTestSource('''
-      import 'a.dart'
-      class B { }
-      String bar() => true;
-      void main() {expect(a^)}''');
-    await computeSuggestions();
-    assertNoSuggestions();
-  }
-
-  Future<void> test_ArgumentList_imported_function_3a() async {
-    // ArgumentList  MethodInvocation  ExpressionStatement  Block
-    addSource('$testPackageLibPath/a.dart', '''
-      library A;
-      bool hasLength(int expected) { }
-      expect(String arg1, int arg2, {bool arg3}) { }
-      void baz() { }''');
-    addTestSource('''
-      // @dart = 2.15
-      import 'a.dart'
-      class B { }
-      String bar() => true;
-      void main() {expect('hello', ^)}''');
-    await computeSuggestions();
-    assertNoSuggestions();
-  }
-
-  Future<void> test_ArgumentList_imported_function_3b() async {
-    // ArgumentList  MethodInvocation  ExpressionStatement  Block
-    addSource('$testPackageLibPath/a.dart', '''
-      library A;
-      bool hasLength(int expected) { }
-      expect(String arg1, int arg2, {bool arg3}) { }
-      void baz() { }''');
-    addTestSource('''
-      // @dart = 2.15
-      import 'a.dart'
-      class B { }
-      String bar() => true;
-      void main() {expect('hello', ^x)}''');
-    await computeSuggestions();
-    assertNoSuggestions();
-  }
-
-  Future<void> test_ArgumentList_imported_function_3c() async {
-    // ArgumentList  MethodInvocation  ExpressionStatement  Block
-    addSource('$testPackageLibPath/a.dart', '''
-      library A;
-      bool hasLength(int expected) { }
-      expect(String arg1, int arg2, {bool arg3}) { }
-      void baz() { }''');
-    addTestSource('''
-      // @dart = 2.15
-      import 'a.dart'
-      class B { }
-      String bar() => true;
-      void main() {expect('hello', x^)}''');
-    await computeSuggestions();
-    assertNoSuggestions();
-  }
-
-  Future<void> test_ArgumentList_imported_function_3d() async {
-    // ArgumentList  MethodInvocation  ExpressionStatement  Block
-    addSource('$testPackageLibPath/a.dart', '''
-      library A;
-      bool hasLength(int expected) { }
-      expect(String arg1, int arg2, {bool arg3}) { }
-      void baz() { }''');
-    addTestSource('''
-      // @dart = 2.15
-      import 'a.dart'
-      class B { }
-      String bar() => true;
-      void main() {expect('hello', x ^)}''');
-    await computeSuggestions();
-    assertNoSuggestions();
-  }
-
-  Future<void> test_ArgumentList_imported_function_named_param() async {
-    //
-    addTestSource('main() { int.parse("16", ^);}');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {
-      'radix': 'int?',
-      'onError': 'int Function(String)?'
-    });
-  }
-
-  Future<void> test_ArgumentList_imported_function_named_param1() async {
-    //
-    addTestSource('main() { int.parse("16", r^);}');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {
-      'radix': 'int?',
-      'onError': 'int Function(String)?'
-    });
-  }
-
-  Future<void> test_ArgumentList_imported_function_named_param2() async {
-    //
-    addTestSource('main() { int.parse("16", radix: 7, ^);}');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(
-        namedArgumentsWithTypes: {'onError': 'int Function(String)?'});
-  }
-
-  Future<void> test_ArgumentList_imported_function_named_param2a() async {
-    //
-    addTestSource('main() { int.parse("16", radix: ^);}');
-    await computeSuggestions();
-    assertNoSuggestions();
-  }
-
-  Future<void> test_ArgumentList_imported_function_named_param_label1() async {
-    //
-    addTestSource('main() { int.parse("16", r^: 16);}');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {
-      'radix': 'int?',
-      'onError': 'int Function(String)?'
-    }, includeColon: false);
-  }
-
-  Future<void> test_ArgumentList_imported_function_named_param_label2() async {
-    //
-    addTestSource('main() { int.parse("16", ^r: 16);}');
-    await computeSuggestions();
-    assertSuggestions(['radix: ,', 'onError: ,']);
-  }
-
-  Future<void> test_ArgumentList_imported_function_named_param_label3() async {
-    //
-    addTestSource('main() { int.parse("16", ^: 16);}');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {
-      'radix': 'int?',
-      'onError': 'int Function(String)?'
-    });
-  }
-
-  Future<void>
-      test_ArgumentList_local_constructor_named_fieldFormal_documentation() async {
+  Future<void> test_fieldFormal_documentation() async {
     var content = '''
 class A {
   /// aaa
@@ -821,8 +249,7 @@
     expect(element.location!.offset, content.indexOf('fff})'));
   }
 
-  Future<void>
-      test_ArgumentList_local_constructor_named_fieldFormal_noDocumentation() async {
+  Future<void> test_fieldFormal_noDocumentation() async {
     var content = '''
 class A {
   int fff;
@@ -846,331 +273,634 @@
     expect(element.location!.offset, content.indexOf('fff})'));
   }
 
-  Future<void> test_ArgumentList_local_constructor_named_param() async {
-    //
+  Future<void> test_flutter_InstanceCreationExpression_0() async {
+    writeTestPackageConfig(flutter: true);
+
     addTestSource('''
-class A { A({int one, String two: 'defaultValue'}) { } }
-main() { new A(^);}''');
+import 'package:flutter/widgets.dart';
+
+build() => new Row(
+    ^
+  );
+''');
+
     await computeSuggestions();
 
-    assertSuggestArgumentsAndTypes(
-        namedArgumentsWithTypes: {'one': 'int', 'two': 'String'});
-    assertSuggestArgumentAndCompletion('one',
-        completion: 'one: ', selectionOffset: 5);
+    assertSuggest('children: [],',
+        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
+        defaultArgListString: null,
+        selectionOffset: 11,
+        defaultArgumentListTextRanges: null);
   }
 
-  Future<void> test_ArgumentList_local_constructor_named_param_1() async {
-    //
+  Future<void> test_flutter_InstanceCreationExpression_01() async {
+    writeTestPackageConfig(flutter: true);
+
     addTestSource('''
-class A { A({int one, String two: 'defaultValue'}) { } }
-main() { new A(o^);}''');
+import 'package:flutter/material.dart';
+
+  build() => new Scaffold(
+        appBar: new AppBar(
+          ^
+        ),
+  );
+''');
+
     await computeSuggestions();
 
-    assertSuggestArgumentsAndTypes(
-        namedArgumentsWithTypes: {'one': 'int', 'two': 'String'});
-    assertSuggestArgumentAndCompletion('one',
-        completion: 'one: ', selectionOffset: 5);
+    assertSuggest('backgroundColor: ,',
+        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
+        defaultArgListString: null, // No default values.
+        selectionOffset: 17);
   }
 
-  Future<void> test_ArgumentList_local_constructor_named_param_2() async {
-    //
+  Future<void> test_flutter_InstanceCreationExpression_1() async {
+    writeTestPackageConfig(flutter: true);
+
     addTestSource('''
-class A { A({int one, String two: 'defaultValue'}) { } }
-main() { new A(^o,);}''');
+import 'package:flutter/material.dart';
+
+build() => new Row(
+    key: null,
+    ^
+  );
+''');
+
     await computeSuggestions();
 
-    assertSuggestArgumentsAndTypes(
-        namedArgumentsWithTypes: {'one': 'int', 'two': 'String'});
-    assertSuggestArgumentAndCompletion('one',
-        completion: 'one: ', selectionOffset: 5);
+    assertSuggest('children: [],',
+        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
+        defaultArgListString: null,
+        selectionOffset: 11,
+        defaultArgumentListTextRanges: null);
   }
 
-  Future<void> test_ArgumentList_local_constructor_named_param_3() async {
-    //
+  Future<void> test_flutter_InstanceCreationExpression_2() async {
+    writeTestPackageConfig(flutter: true);
+
     addTestSource('''
-class A { A({int one, String two: 'defaultValue'}) { } }
-main() { new A(two: 'foo', ^);}''');
+import 'package:flutter/material.dart';
+
+build() => new Row(
+    ^
+    key: null,
+  );
+''');
+
     await computeSuggestions();
 
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
-    assertSuggestArgumentAndCompletion('one',
-        completion: 'one: ', selectionOffset: 5);
-  }
-
-  Future<void> test_ArgumentList_local_constructor_named_param_4() async {
-    //
-    addTestSource('''
-class A { A({int one, String two: 'defaultValue'}) { } }
-main() { new A(two: 'foo', o^);}''');
-    await computeSuggestions();
-
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
-    assertSuggestArgumentAndCompletion('one',
-        completion: 'one: ', selectionOffset: 5);
-  }
-
-  Future<void> test_ArgumentList_local_constructor_named_param_5() async {
-    //
-    addTestSource('''
-class A { A({int one, String two: 'defaultValue'}) { } }
-main() { new A(two: 'foo', o^,);}''');
-    await computeSuggestions();
-
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'one': 'int'});
-    assertSuggestArgumentAndCompletion('one',
-        completion: 'one: ', selectionOffset: 5);
-  }
-
-  Future<void> test_ArgumentList_local_constructor_named_param_6() async {
-    //
-    addTestSource('''
-class A { A.foo({int one, String two: 'defaultValue'}) { } }
-main() { new A.foo(^);}''');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(
-        namedArgumentsWithTypes: {'one': 'int', 'two': 'String'});
+    assertSuggest('children: [],',
+        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
+        defaultArgListString: null,
+        selectionOffset: 11,
+        defaultArgumentListTextRanges: null);
   }
 
   Future<void>
-      test_ArgumentList_local_constructor_named_param_prefixed_prepend() async {
-    //
+      test_flutter_InstanceCreationExpression_children_dynamic() async {
+    // Ensure we don't generate unneeded <dynamic> param if a future API doesn't
+    // type it's children.
+    writeTestPackageConfig(flutter: true);
+
     addTestSource('''
-class A { A({int one, String two: 'defaultValue'}) { } }
-main() { new A(o^ two: 'foo');}''');
-    await computeSuggestions();
+import 'package:flutter/material.dart';
 
-    assertSuggestArgumentsAndTypes(
-        namedArgumentsWithTypes: {'one': 'int'}, includeComma: true);
-    assertSuggestArgumentAndCompletion('one',
-        completion: 'one: ,', selectionOffset: 5);
-  }
+build() => new Container(
+    child: new DynamicRow(^);
+  );
 
-  Future<void> test_ArgumentList_local_constructor_named_param_prepend() async {
-    //
-    addTestSource('''
-class A { A({int one, String two: 'defaultValue'}) { } }
-main() { new A(^ two: 'foo');}''');
-    await computeSuggestions();
-
-    assertSuggestArgumentsAndTypes(
-        namedArgumentsWithTypes: {'one': 'int'}, includeComma: true);
-    assertSuggestArgumentAndCompletion('one',
-        completion: 'one: ,', selectionOffset: 5);
-  }
-
-  Future<void>
-      test_ArgumentList_local_constructor_named_param_prepend_1() async {
-    //
-    addTestSource('''
-class A { A({int one, String two: 'defaultValue'}) { } }
-main() { new A(o^, two: 'foo');}''');
-    await computeSuggestions();
-
-    assertSuggestArgumentsAndTypes(
-        namedArgumentsWithTypes: {'one': 'int'}, includeComma: false);
-    assertSuggestArgumentAndCompletion('one',
-        completion: 'one: ', selectionOffset: 5);
-  }
-
-  Future<void>
-      test_ArgumentList_local_constructor_named_param_prepend_2() async {
-    //
-    addTestSource('''
-class A { A({int one, String two: 'defaultValue'}) { } }
-main() { new A(^, two: 'foo');}''');
-    await computeSuggestions();
-
-    assertSuggestArgumentsAndTypes(
-        namedArgumentsWithTypes: {'one': 'int'}, includeComma: false);
-    assertSuggestArgumentAndCompletion('one',
-        completion: 'one: ', selectionOffset: 5);
-  }
-
-  Future<void> test_ArgumentList_local_constructor_required_param_0() async {
-    writeTestPackageConfig(meta: true);
-    addTestSource('''
-import 'package:meta/meta.dart';
-class A { A({int one, @required String two: 'defaultValue'}) { } }
-main() { new A(^);}''');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(
-        namedArgumentsWithTypes: {'one': 'int', 'two': 'String'},
-        requiredParamIndices: [1]);
-  }
-
-  Future<void> test_ArgumentList_local_function_3a() async {
-    // ArgumentList  MethodInvocation  ExpressionStatement  Block
-    addTestSource('''
-      // @dart = 2.15
-      expect(arg1, int arg2, {bool arg3}) { }
-      class B { }
-      String bar() => true;
-      void main() {expect('hello', ^)}''');
-    await computeSuggestions();
-    assertNoSuggestions();
-  }
-
-  Future<void> test_ArgumentList_local_function_3b() async {
-    // ArgumentList  MethodInvocation  ExpressionStatement  Block
-    addTestSource('''
-      // @dart = 2.15
-      expect(arg1, int arg2, {bool arg3}) { }
-      class B { }
-      String bar() => true;
-      void main() {expect('hello', ^x)}''');
-    await computeSuggestions();
-    assertNoSuggestions();
-  }
-
-  Future<void> test_ArgumentList_local_function_3c() async {
-    // ArgumentList  MethodInvocation  ExpressionStatement  Block
-    addTestSource('''
-      // @dart = 2.15
-      expect(arg1, int arg2, {bool arg3}) { }
-      class B { }
-      String bar() => true;
-      void main() {expect('hello', x^)}''');
-    await computeSuggestions();
-    assertNoSuggestions();
-  }
-
-  Future<void> test_ArgumentList_local_function_3d() async {
-    // ArgumentList  MethodInvocation  ExpressionStatement  Block
-    addTestSource('''
-      // @dart = 2.15
-      expect(arg1, int arg2, {bool arg3}) { }
-      class B { }
-      String bar() => true;
-      void main() {expect('hello', x ^)}''');
-    await computeSuggestions();
-    assertNoSuggestions();
-  }
-
-  Future<void> test_ArgumentList_local_function_named_param() async {
-    //
-    addTestSource('''
-f(v,{int radix, int onError(String s)}){}
-main() { f("16", ^);}''');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {
-      'radix': 'int',
-      'onError': 'int Function(String)'
-    });
-  }
-
-  Future<void> test_ArgumentList_local_function_named_param1() async {
-    //
-    addTestSource('''
-f(v,{int radix, int onError(String s)}){}
-main() { f("16", r^);}''');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {
-      'radix': 'int',
-      'onError': 'int Function(String)'
-    });
-  }
-
-  Future<void> test_ArgumentList_local_function_named_param2() async {
-    //
-    addTestSource('''
-f(v,{int radix, int onError(String s)}){}
-main() { f("16", radix: 7, ^);}''');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(
-        namedArgumentsWithTypes: {'onError': 'int Function(String)'});
-  }
-
-  Future<void> test_ArgumentList_local_function_named_param2a() async {
-    //
-    addTestSource('''
-f(v,{int radix, int onError(String s)}){}
-main() { f("16", radix: ^);}''');
-    await computeSuggestions();
-    assertNoSuggestions();
-  }
-
-  Future<void> test_ArgumentList_local_functionExpression_params() async {
-    // https://github.com/dart-lang/sdk/issues/42064
-    addTestSource('''
-    void main2() {
-      final add1 = ({int a}) => a + 1;
-      add1(^);
-    }
-    ''');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {'a': 'int'});
-  }
-
-  Future<void> test_ArgumentList_local_method_0() async {
-    // ArgumentList  MethodInvocation  ExpressionStatement  Block
-    addSource('$testPackageLibPath/a.dart', '''
-      library A;
-      bool hasLength(int expected) { }
-      void baz() { }''');
-    addTestSource('''
-      import 'a.dart'
-      class B {
-        expect() { }
-        void foo() {expect(^)}}
-      String bar() => true;''');
-    await computeSuggestions();
-    assertNoSuggestions();
-  }
-
-  Future<void> test_ArgumentList_nnbd_function_named_param() async {
-    addTestSource(r'''
-f({int? nullable, int nonnullable}) {}
-main() { f(^);}');
+class DynamicRow extends Widget {
+  DynamicRow({List children: null});
+}
 ''');
+
     await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {
-      'nullable': 'int?',
-      'nonnullable': 'int',
-    });
+
+    assertSuggest('children: [],',
+        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
+        defaultArgListString: null,
+        selectionOffset: 11,
+        defaultArgumentListTextRanges: null);
   }
 
-  Future<void> test_ArgumentList_nnbd_function_named_param_imported() async {
-    addSource('$testPackageLibPath/a.dart', '''
-f({int? nullable, int nonnullable}) {}''');
-    createAnalysisOptionsFile(experiments: [EnableString.non_nullable]);
-    addTestSource(r'''
-import "a.dart";
-main() { f(^);}');
-''');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {
-      'nullable': 'int?',
-      'nonnullable': 'int',
-    });
-  }
+  Future<void> test_flutter_InstanceCreationExpression_children_Map() async {
+    // Ensure we don't generate Map params for a future API
+    writeTestPackageConfig(flutter: true);
 
-  Future<void> test_ArgumentList_nnbd_function_named_param_legacy() async {
-    addSource('$testPackageLibPath/a.dart', '''
-// @dart = 2.8
-f({int named}) {}''');
-    addTestSource(r'''
-import "a.dart";
-main() { f(^);}');
-''');
-    await computeSuggestions();
-    assertSuggestArgumentsAndTypes(namedArgumentsWithTypes: {
-      'named': 'int*',
-    });
-  }
-
-  Future<void> test_superConstructorInvocation() async {
     addTestSource('''
+import 'package:flutter/material.dart';
+
+build() => new Container(
+    child: new MapRow(^);
+  );
+
+class MapRow extends Widget {
+  MapRow({Map<Object, Object> children: null});
+}
+''');
+
+    await computeSuggestions();
+
+    assertSuggest('children: ,',
+        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
+        selectionOffset: 10,
+        defaultArgListString: null);
+  }
+
+  Future<void> test_flutter_InstanceCreationExpression_slivers() async {
+    writeTestPackageConfig(flutter: true);
+
+    addTestSource('''
+import 'package:flutter/material.dart';
+
+build() => new CustomScrollView(
+    ^
+  );
+
+class CustomScrollView extends Widget {
+  CustomScrollView({List<Widget> slivers});
+}
+''');
+
+    await computeSuggestions();
+
+    assertSuggest('slivers: [],',
+        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
+        defaultArgListString: null,
+        selectionOffset: 10,
+        defaultArgumentListTextRanges: null);
+  }
+
+  Future<void> test_flutter_MethodExpression_children() async {
+    // Ensure we don't generate params for a method call
+    // TODO(brianwilkerson) This test has been changed so that it no longer has
+    // anything to do with Flutter (by moving the declaration of `foo` out of
+    // the 'material' library). Determine whether the test is still valid.
+    writeTestPackageConfig(flutter: true);
+
+    addTestSource('''
+import 'package:flutter/material.dart';
+
+main() {
+  foo(^);
+}
+
+foo({String children}) {}
+''');
+
+    await computeSuggestions();
+
+    assertSuggest('children: ',
+        csKind: CompletionSuggestionKind.NAMED_ARGUMENT,
+        defaultArgListString: null);
+  }
+
+  Future<void> test_named_01() async {
+    await _tryParametersArguments(
+      parameters: '({bool one, int two})',
+      arguments: '(^)',
+      check: () {
+        assertSuggestArgumentsAndTypes(
+          namedArgumentsWithTypes: {'one': 'bool', 'two': 'int'},
+        );
+        assertSuggestArgumentAndCompletion('one',
+            completion: 'one: ', selectionOffset: 5);
+      },
+    );
+  }
+
+  Future<void> test_named_02() async {
+    await _tryParametersArguments(
+      parameters: '({bool one, int two})',
+      arguments: '(o^)',
+      check: () {
+        assertSuggestArgumentsAndTypes(
+          namedArgumentsWithTypes: {'one': 'bool', 'two': 'int'},
+        );
+        assertSuggestArgumentAndCompletion('one',
+            completion: 'one: ', selectionOffset: 5);
+      },
+    );
+  }
+
+  Future<void> test_named_03() async {
+    await _tryParametersArguments(
+      parameters: '({bool one, int two})',
+      arguments: '(^o,)',
+      check: () {
+        assertSuggestArgumentsAndTypes(
+          namedArgumentsWithTypes: {'one': 'bool', 'two': 'int'},
+        );
+        assertSuggestArgumentAndCompletion('one',
+            completion: 'one: ', selectionOffset: 5);
+      },
+    );
+  }
+
+  Future<void> test_named_04() async {
+    await _tryParametersArguments(
+      parameters: '({bool one, int two})',
+      arguments: '(^ two: 2)',
+      check: () {
+        assertSuggestArgumentsAndTypes(
+            namedArgumentsWithTypes: {'one': 'bool'}, includeComma: true);
+        assertSuggestArgumentAndCompletion('one',
+            completion: 'one: ,', selectionOffset: 5);
+      },
+    );
+  }
+
+  Future<void> test_named_05() async {
+    await _tryParametersArguments(
+      parameters: '({bool one, int two})',
+      arguments: '(o^ two: 2)',
+      check: () {
+        assertSuggestArgumentsAndTypes(
+            namedArgumentsWithTypes: {'one': 'bool'}, includeComma: true);
+        assertSuggestArgumentAndCompletion('one',
+            completion: 'one: ,', selectionOffset: 5);
+      },
+    );
+  }
+
+  Future<void> test_named_06() async {
+    await _tryParametersArguments(
+      parameters: '({bool one, int two})',
+      arguments: '(^two: 2)',
+      check: () {
+        assertSuggestions(['one: ,']);
+      },
+    );
+  }
+
+  Future<void> test_named_07() async {
+    await _tryParametersArguments(
+      parameters: '({bool one, int two})',
+      arguments: '(^, two: 2)',
+      check: () {
+        assertSuggestArgumentsAndTypes(
+          namedArgumentsWithTypes: {'one': 'bool'},
+          includeComma: false,
+        );
+        assertSuggestArgumentAndCompletion('one',
+            completion: 'one: ', selectionOffset: 5);
+      },
+    );
+  }
+
+  Future<void> test_named_08() async {
+    await _tryParametersArguments(
+      parameters: '({bool one, int two})',
+      arguments: '(o^, two: 2)',
+      check: () {
+        assertSuggestArgumentsAndTypes(
+            namedArgumentsWithTypes: {'one': 'bool'}, includeComma: false);
+        assertSuggestArgumentAndCompletion('one',
+            completion: 'one: ', selectionOffset: 5);
+      },
+    );
+  }
+
+  Future<void> test_named_09() async {
+    await _tryParametersArguments(
+      parameters: '({bool one, int two})',
+      arguments: '(^ , two: 2)',
+      check: () {
+        assertSuggestArgumentsAndTypes(
+          namedArgumentsWithTypes: {'one': 'bool'},
+        );
+      },
+    );
+  }
+
+  Future<void> test_named_10() async {
+    await _tryParametersArguments(
+      parameters: '(int one, {bool two, int three})',
+      arguments: '(1, ^, three: 3)',
+      check: () {
+        assertSuggestArgumentsAndTypes(
+          namedArgumentsWithTypes: {'two': 'bool'},
+        );
+      },
+    );
+  }
+
+  Future<void> test_named_11() async {
+    await _tryParametersArguments(
+      parameters: '(int one, {bool two, int three})',
+      arguments: '(1, ^ three: 3)',
+      check: () {
+        assertSuggestions(['two: ,']);
+      },
+    );
+  }
+
+  Future<void> test_named_12() async {
+    await _tryParametersArguments(
+      parameters: '(int one, {bool two, int three})',
+      arguments: '(1, ^three: 3)',
+      check: () {
+        assertSuggestions(['two: ,']);
+      },
+    );
+  }
+
+  @failingTest
+  Future<void> test_named_13() async {
+    await _tryParametersArguments(
+      parameters: '({bool one, int two})',
+      arguments: '(two: 2^)',
+      check: () {
+        assertSuggestions([', one: ']);
+      },
+    );
+  }
+
+  @failingTest
+  Future<void> test_named_14() async {
+    await _tryParametersArguments(
+      parameters: '({bool one, int two})',
+      arguments: '(two: 2 ^)',
+      check: () {
+        assertSuggestions([', one: ']);
+      },
+    );
+  }
+
+  Future<void> test_named_15() async {
+    await _tryParametersArguments(
+      parameters: '({bool one, int two})',
+      arguments: '(two: 2, ^)',
+      check: () {
+        assertSuggestArgumentsAndTypes(
+          namedArgumentsWithTypes: {'one': 'bool'},
+        );
+        assertSuggestArgumentAndCompletion('one',
+            completion: 'one: ', selectionOffset: 5);
+      },
+    );
+  }
+
+  Future<void> test_named_16() async {
+    await _tryParametersArguments(
+      parameters: '({bool one, int two})',
+      arguments: '(two: 2, o^)',
+      check: () {
+        assertSuggestArgumentsAndTypes(
+          namedArgumentsWithTypes: {'one': 'bool'},
+        );
+        assertSuggestArgumentAndCompletion('one',
+            completion: 'one: ', selectionOffset: 5);
+      },
+    );
+  }
+
+  Future<void> test_named_17() async {
+    await _tryParametersArguments(
+      parameters: '({bool one, int two})',
+      arguments: '(two: 2, o^,)',
+      check: () {
+        assertSuggestArgumentsAndTypes(
+          namedArgumentsWithTypes: {'one': 'bool'},
+        );
+        assertSuggestArgumentAndCompletion('one',
+            completion: 'one: ', selectionOffset: 5);
+      },
+    );
+  }
+
+  Future<void> test_named_18() async {
+    await _tryParametersArguments(
+      parameters: '(int one, int two, int three, {int four, int five})',
+      arguments: '(1, ^, 3)',
+      check: () {
+        assertSuggestions(['four: ', 'five: ']);
+      },
+    );
+  }
+
+  Future<void> test_named_19() async {
+    await _tryParametersArguments(
+      languageVersion: '2.15',
+      parameters: '(int one, int two, int three, {int four, int five})',
+      arguments: '(1, ^, 3)',
+      check: () {
+        assertNoSuggestions();
+      },
+    );
+  }
+
+  Future<void> test_named_20() async {
+    await _tryParametersArguments(
+      parameters: '({bool one, int two})',
+      arguments: '(o^: false)',
+      check: () {
+        assertSuggestArgumentsAndTypes(
+          namedArgumentsWithTypes: {'one': 'bool', 'two': 'int'},
+          includeColon: false,
+        );
+      },
+    );
+  }
+
+  Future<void> test_named_21() async {
+    await _tryParametersArguments(
+      parameters: '(bool one, {int two, double three})',
+      arguments: '(false, ^t: 2)',
+      check: () {
+        assertSuggestions(['two: ,', 'three: ,']);
+      },
+    );
+  }
+
+  Future<void> test_named_22() async {
+    await _tryParametersArguments(
+      parameters: '(bool one, {int two, double three})',
+      arguments: '(false, ^: 2)',
+      check: () {
+        assertSuggestArgumentsAndTypes(
+          namedArgumentsWithTypes: {'two': 'int', 'three': 'double'},
+        );
+      },
+    );
+  }
+
+  Future<void> test_named_23() async {
+    await _tryParametersArguments(
+      parameters: '({bool one, int two})',
+      arguments: '(one: ^)',
+      check: () {
+        assertNoSuggestions();
+      },
+    );
+  }
+
+  Future<void> _tryParametersArguments({
+    String? languageVersion,
+    required String parameters,
+    required String arguments,
+    required void Function() check,
+  }) async {
+    var languageVersionLine = languageVersion != null
+        ? '// @dart = $languageVersion'
+        : '// no language version override';
+
+    // Annotation, local class.
+    addTestSource2('''
+$languageVersionLine
 class A {
-  final bool field1;
-  final int field2;
-  A({this.field1, this.field2});
+  const A$parameters;
+}
+@A$arguments
+void f() {}
+''');
+    await computeSuggestions();
+    check();
+
+    // Annotation, imported class.
+    newFile('$testPackageLibPath/a.dart', content: '''
+class A {
+  const A$parameters;
+}
+''');
+    addTestSource2('''
+$languageVersionLine
+import 'a.dart';
+@A$arguments
+void f() {}
+''');
+    await computeSuggestions();
+    check();
+
+    // Annotation, imported class, prefixed.
+    newFile('$testPackageLibPath/a.dart', content: '''
+class A {
+  const A$parameters;
+}
+''');
+    addTestSource2('''
+$languageVersionLine
+import 'a.dart' as p;
+@p.A$arguments
+void f() {}
+''');
+    await computeSuggestions();
+    check();
+
+    // Function expression invocation.
+    addTestSource2('''
+$languageVersionLine
+import 'a.dart';
+void f$parameters() {}
+var v = (f)$arguments;
+''');
+    await computeSuggestions();
+    check();
+
+    // Instance creation, local class, generative.
+    addTestSource2('''
+$languageVersionLine
+class A {
+  A$parameters;
+}
+var v = A$arguments;
+''');
+    await computeSuggestions();
+    check();
+
+    // Instance creation, imported class, generative.
+    newFile('$testPackageLibPath/a.dart', content: '''
+class A {
+  A$parameters;
+}
+''');
+    addTestSource2('''
+$languageVersionLine
+import 'a.dart';
+var v = A$arguments;
+''');
+    await computeSuggestions();
+    check();
+
+    // Instance creation, imported class, factory.
+    newFile('$testPackageLibPath/a.dart', content: '''
+class A {
+  factory A$parameters => throw 0;
+}
+''');
+    addTestSource2('''
+$languageVersionLine
+import 'a.dart';
+var v = A$arguments;
+''');
+    await computeSuggestions();
+    check();
+
+    // Method invocation, local method.
+    addTestSource2('''
+$languageVersionLine
+class A {
+  void foo$parameters() {}
+}
+var v = A().foo$arguments;
+''');
+    await computeSuggestions();
+    check();
+
+    // Method invocation, local function.
+    addTestSource2('''
+$languageVersionLine
+void f$parameters() {}
+var v = f$arguments;
+''');
+    await computeSuggestions();
+    check();
+
+    // Method invocation, imported function.
+    newFile('$testPackageLibPath/a.dart', content: '''
+void f$parameters() {}
+''');
+    addTestSource2('''
+$languageVersionLine
+import 'a.dart';
+var v = f$arguments;
+''');
+    await computeSuggestions();
+    check();
+
+    // Super constructor invocation.
+    addTestSource2('''
+$languageVersionLine
+class A {
+  A$parameters;
 }
 class B extends A {
-  B() : super(^);
+  B() : super$arguments;
 }
 ''');
     await computeSuggestions();
-    assertSuggestArgumentsAndTypes(
-        namedArgumentsWithTypes: {'field1': 'bool', 'field2': 'int'});
+    check();
+
+    // This constructor invocation.
+    // TODO(scheglov) implement
+//     addTestSource2('''
+// $languageVersionLine
+// class A {
+//   A$parameters;
+//   A.named() : this$arguments;
+// }
+// ''');
+//     await computeSuggestions();
+//     check();
+
+    // Invalid: getter invocation.
+    // Parameters not used. Check not used.
+    addTestSource2('''
+$languageVersionLine
+int get foo => 0;
+var v = foo$arguments;
+''');
+    await computeSuggestions();
+    assertNoSuggestions();
   }
 }
diff --git a/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart b/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart
index a8c7e39..0485895 100644
--- a/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart
+++ b/pkg/analysis_server/test/services/completion/dart/completion_contributor_util.dart
@@ -104,6 +104,19 @@
     addSource(testFile, content);
   }
 
+  /// A variant of [addTestSource] that can be invoked more than once,
+  /// and will notify the driver that the file changed.
+  void addTestSource2(String content) {
+    _completionOffset = content.indexOf('^');
+    expect(_completionOffset, greaterThanOrEqualTo(0), reason: 'missing ^');
+    var nextOffset = content.indexOf('^', _completionOffset + 1);
+    expect(nextOffset, equals(-1), reason: 'too many ^');
+    content = content.substring(0, _completionOffset) +
+        content.substring(_completionOffset + 1);
+    addSource(testFile, content);
+    driverFor(testFile).changeFile(testFile);
+  }
+
   void assertCoreTypeSuggestions() {
     assertSuggest('Comparable');
     assertSuggest('Comparator');
diff --git a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
index ce3f0b2..0b49b4e 100644
--- a/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/analysis/library_analyzer.dart
@@ -451,18 +451,15 @@
   }
 
   void _computeVerifyErrors(FileState file, CompilationUnit unit) {
-    RecordingErrorListener errorListener = _getErrorListener(file);
+    ErrorReporter errorReporter = _getErrorReporter(file);
 
     CodeChecker checker = CodeChecker(
       _typeProvider,
       _typeSystem,
-      _inheritance,
-      errorListener,
+      errorReporter,
     );
     checker.visitCompilationUnit(unit);
 
-    ErrorReporter errorReporter = _getErrorReporter(file);
-
     //
     // Validate the directives.
     //
diff --git a/pkg/analyzer/lib/src/dart/ast/utilities.dart b/pkg/analyzer/lib/src/dart/ast/utilities.dart
index 308fad828..6e0840d 100644
--- a/pkg/analyzer/lib/src/dart/ast/utilities.dart
+++ b/pkg/analyzer/lib/src/dart/ast/utilities.dart
@@ -9,7 +9,6 @@
 import 'package:analyzer/dart/ast/visitor.dart';
 import 'package:analyzer/exception/exception.dart';
 import 'package:analyzer/src/dart/ast/ast.dart';
-import 'package:analyzer/src/dart/ast/to_source_visitor.dart';
 import 'package:analyzer/src/dart/element/element.dart';
 import 'package:analyzer/src/generated/engine.dart' show AnalysisEngine;
 
@@ -3228,10 +3227,3 @@
     return node.end < _position;
   }
 }
-
-/// A visitor used to write a source representation of a visited AST node (and
-/// all of it's children) to a sink.
-@Deprecated('Use ToSourceVisitor')
-class ToSourceVisitor2 extends ToSourceVisitor {
-  ToSourceVisitor2(StringSink sink) : super(sink);
-}
diff --git a/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart b/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
index 0b096be..d3ba759 100644
--- a/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
+++ b/pkg/analyzer/lib/src/dart/micro/library_analyzer.dart
@@ -362,18 +362,15 @@
   }
 
   void _computeVerifyErrors(FileState file, CompilationUnit unit) {
-    RecordingErrorListener errorListener = _getErrorListener(file);
+    ErrorReporter errorReporter = _getErrorReporter(file);
 
     CodeChecker checker = CodeChecker(
       _typeProvider,
       _typeSystem,
-      _inheritance,
-      errorListener,
+      errorReporter,
     );
     checker.visitCompilationUnit(unit);
 
-    ErrorReporter errorReporter = _getErrorReporter(file);
-
     //
     // Validate the directives.
     //
diff --git a/pkg/analyzer/lib/src/generated/constant.dart b/pkg/analyzer/lib/src/generated/constant.dart
index f17f0d2..4a09e59 100644
--- a/pkg/analyzer/lib/src/generated/constant.dart
+++ b/pkg/analyzer/lib/src/generated/constant.dart
@@ -99,9 +99,6 @@
   /// The library containing the expression(s) that will be evaluated.
   final LibraryElementImpl _library;
 
-  /// Initialize a newly created evaluator to evaluate expressions in the given
-  /// [source]. The [typeProvider] is the type provider used to access known
-  /// types.
   ConstantEvaluator(this._source, this._library);
 
   EvaluationResult evaluate(Expression expression) {
diff --git a/pkg/analyzer/lib/src/task/strong/checker.dart b/pkg/analyzer/lib/src/task/strong/checker.dart
index ef1119a..7c2569f 100644
--- a/pkg/analyzer/lib/src/task/strong/checker.dart
+++ b/pkg/analyzer/lib/src/task/strong/checker.dart
@@ -14,7 +14,6 @@
 import 'package:analyzer/error/listener.dart';
 import 'package:analyzer/src/dart/ast/extensions.dart';
 import 'package:analyzer/src/dart/element/element.dart';
-import 'package:analyzer/src/dart/element/inheritance_manager3.dart';
 import 'package:analyzer/src/dart/element/type.dart';
 import 'package:analyzer/src/dart/element/type_system.dart';
 import 'package:analyzer/src/error/codes.dart' show CompileTimeErrorCode;
@@ -37,18 +36,13 @@
 
 /// Checks the body of functions and properties.
 class CodeChecker extends RecursiveAstVisitor {
-  final TypeSystemImpl rules;
-  final TypeProvider typeProvider;
-  final InheritanceManager3 inheritance;
-  final AnalysisErrorListener reporter;
+  final TypeSystemImpl _typeSystem;
+  final TypeProvider _typeProvider;
+  final ErrorReporter _errorReporter;
 
   late final FeatureSet _featureSet;
 
-  CodeChecker(TypeProvider typeProvider, TypeSystemImpl rules, this.inheritance,
-      AnalysisErrorListener reporter)
-      : typeProvider = typeProvider,
-        rules = rules,
-        reporter = reporter;
+  CodeChecker(this._typeProvider, this._typeSystem, this._errorReporter);
 
   bool get _isNonNullableByDefault =>
       _featureSet.isEnabled(Feature.non_nullable);
@@ -97,11 +91,11 @@
     } else if (element is SpreadElement) {
       // Spread expression may be dynamic in which case it's implicitly downcast
       // to Iterable<dynamic>
-      DartType expressionCastType = typeProvider.iterableDynamicType;
+      DartType expressionCastType = _typeProvider.iterableDynamicType;
       checkAssignment(element.expression, expressionCastType);
 
       var exprType = element.expression.typeOrThrow;
-      var asIterableType = exprType.asInstanceOf(typeProvider.iterableElement);
+      var asIterableType = exprType.asInstanceOf(_typeProvider.iterableElement);
 
       if (asIterableType != null) {
         var elementType = asIterableType.typeArguments[0];
@@ -126,12 +120,12 @@
     } else if (element is SpreadElement) {
       // Spread expression may be dynamic in which case it's implicitly downcast
       // to Map<dynamic, dynamic>
-      DartType expressionCastType = typeProvider.mapType(
+      DartType expressionCastType = _typeProvider.mapType(
           DynamicTypeImpl.instance, DynamicTypeImpl.instance);
       checkAssignment(element.expression, expressionCastType);
 
       var exprType = element.expression.typeOrThrow;
-      var asMapType = exprType.asInstanceOf(typeProvider.mapElement);
+      var asMapType = exprType.asInstanceOf(_typeProvider.mapElement);
 
       if (asMapType != null) {
         var elementKeyType = asMapType.typeArguments[0];
@@ -450,7 +444,7 @@
 
       // Refine the return type.
       var rhsType = expr.rightHandSide.typeOrThrow;
-      var returnType = rules.refineBinaryExpressionType(
+      var returnType = _typeSystem.refineBinaryExpressionType(
         expr.readType!,
         op,
         rhsType,
@@ -491,20 +485,20 @@
     if (fromType is FunctionType) {
       from = fromType;
     } else if (fromType is InterfaceType) {
-      from = rules.getCallMethodType(fromType);
+      from = _typeSystem.getCallMethodType(fromType);
       callTearoff = true;
     }
     if (from == null) {
       return null; // unrelated
     }
 
-    if (rules.isSubtypeOf(from, to)) {
+    if (_typeSystem.isSubtypeOf(from, to)) {
       // Sound subtype.
       // However we may still need cast if we have a call tearoff.
       return callTearoff;
     }
 
-    if (rules.isSubtypeOf(to, from)) {
+    if (_typeSystem.isSubtypeOf(to, from)) {
       // Assignable, but needs cast.
       return true;
     }
@@ -568,8 +562,8 @@
 
       // Refine the return type.
       var functionType = element.type;
-      var rhsType = typeProvider.intType;
-      var returnType = rules.refineBinaryExpressionType(
+      var rhsType = _typeProvider.intType;
+      var returnType = _typeSystem.refineBinaryExpressionType(
         node.readType!,
         TokenType.PLUS,
         rhsType,
@@ -611,18 +605,18 @@
     if (body.isAsynchronous) {
       if (body.isGenerator) {
         // Stream<T> -> T
-        expectedElement = typeProvider.streamElement;
+        expectedElement = _typeProvider.streamElement;
       } else {
         // Future<T> -> FutureOr<T>
-        var typeArg = (type.element == typeProvider.futureElement)
+        var typeArg = (type.element == _typeProvider.futureElement)
             ? (type as InterfaceType).typeArguments[0]
-            : typeProvider.dynamicType;
-        return typeProvider.futureOrType(typeArg);
+            : _typeProvider.dynamicType;
+        return _typeProvider.futureOrType(typeArg);
       }
     } else {
       if (body.isGenerator) {
         // Iterable<T> -> T
-        expectedElement = typeProvider.iterableElement;
+        expectedElement = _typeProvider.iterableElement;
       } else {
         // T -> T
         return type;
@@ -632,7 +626,7 @@
       if (type.isDynamic) {
         // Ensure it's at least a Stream / Iterable.
         return expectedElement.instantiate(
-          typeArguments: [typeProvider.dynamicType],
+          typeArguments: [_typeProvider.dynamicType],
           nullabilitySuffix: _noneOrStarSuffix,
         );
       } else {
@@ -669,7 +663,7 @@
     if (type is FunctionType) {
       return type;
     } else if (type is InterfaceType) {
-      return rules.getCallMethodType(type);
+      return _typeSystem.getCallMethodType(type);
     }
     return null;
   }
@@ -692,12 +686,12 @@
     }
 
     // fromT <: toT, no coercion needed.
-    if (rules.isSubtypeOf(from, to)) {
+    if (_typeSystem.isSubtypeOf(from, to)) {
       return false;
     }
 
     // Down cast or legal sideways cast, coercion needed.
-    if (rules.isAssignableTo(from, to)) {
+    if (_typeSystem.isAssignableTo(from, to)) {
       return true;
     }
 
@@ -705,7 +699,7 @@
     // In this case, we're more permissive than assignability.
     if (to.isDartAsyncFutureOr) {
       var to1 = (to as InterfaceType).typeArguments[0];
-      var to2 = typeProvider.futureType(to1);
+      var to2 = _typeProvider.futureType(to1);
       return _needsImplicitCast(expr, to: to1, from: from) == true ||
           _needsImplicitCast(expr, to: to2, from: from) == true;
     }
@@ -728,9 +722,9 @@
       bool forSpreadValue = false}) {
     // If this is an implicit tearoff, we need to mark the cast, but we don't
     // want to warn if it's a legal subtype.
-    if (from is InterfaceType && rules.acceptsFunctionType(to)) {
-      var type = rules.getCallMethodType(from);
-      if (type != null && rules.isSubtypeOf(type, to)) {
+    if (from is InterfaceType && _typeSystem.acceptsFunctionType(to)) {
+      var type = _typeSystem.getCallMethodType(from);
+      if (type != null && _typeSystem.isSubtypeOf(type, to)) {
         return;
       }
     }
@@ -793,24 +787,23 @@
     }
   }
 
-  void _recordMessage(AstNode node, ErrorCode errorCode, List arguments) {
-    // TODO(brianwilkerson) Convert this class to use an ErrorReporter so that
-    //  the logic for converting types is in one place.
-    arguments = arguments.map((argument) {
-      if (argument is DartType) {
-        return argument.getDisplayString(withNullability: false);
-      } else {
-        return argument;
-      }
-    }).toList();
+  void _recordMessage(
+      AstNode node, ErrorCode errorCode, List<Object> arguments) {
+    var argumentStrings = [
+      for (var argument in arguments)
+        if (argument is DartType)
+          argument.getDisplayString(withNullability: false)
+        else
+          argument.toString(),
+    ];
 
     int begin = node is AnnotatedNode
         ? node.firstTokenAfterCommentAndMetadata.offset
         : node.offset;
     int length = node.end - begin;
     var source = (node.root as CompilationUnit).declaredElement!.source;
-    var error = AnalysisError(source, begin, length, errorCode, arguments);
-    reporter.onError(error);
+    _errorReporter.reportError(
+        AnalysisError(source, begin, length, errorCode, argumentStrings));
   }
 
   void _visitForEachParts(ForEachParts node, SimpleIdentifier loopVariable) {
@@ -832,8 +825,8 @@
     }
     // Find the element type of the sequence.
     var sequenceElement = awaitKeyword != null
-        ? typeProvider.streamElement
-        : typeProvider.iterableElement;
+        ? _typeProvider.streamElement
+        : _typeProvider.iterableElement;
     var iterableType = node.iterable.typeOrThrow;
     var elementType = _getInstanceTypeArgument(iterableType, sequenceElement);
 
@@ -842,11 +835,11 @@
     // we'll do a separate cast of the dynamic element to the variable's type.
     if (elementType == null) {
       var sequenceType = sequenceElement.instantiate(
-        typeArguments: [typeProvider.dynamicType],
+        typeArguments: [_typeProvider.dynamicType],
         nullabilitySuffix: _noneOrStarSuffix,
       );
 
-      if (rules.isSubtypeOf(sequenceType, iterableType)) {
+      if (_typeSystem.isSubtypeOf(sequenceType, iterableType)) {
         _recordImplicitCast(node.iterable, sequenceType, from: iterableType);
         elementType = DynamicTypeImpl.instance;
       }
diff --git a/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart b/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart
index c686016..da1409d 100644
--- a/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart
+++ b/pkg/analyzer/test/src/dart/ast/to_source_visitor_test.dart
@@ -18,12 +18,12 @@
 
 main() {
   defineReflectiveSuite(() {
-    defineReflectiveTests(ToSourceVisitor2Test);
+    defineReflectiveTests(ToSourceVisitorTest);
   });
 }
 
 @reflectiveTest
-class ToSourceVisitor2Test {
+class ToSourceVisitorTest {
   void test_visitAdjacentStrings() {
     _assertSource(
         "'a' 'b'",
@@ -3400,7 +3400,7 @@
         AstTestFactory.yieldEachStatement(AstTestFactory.identifier3("e")));
   }
 
-  /// Assert that a `ToSourceVisitor2` will produce the [expectedSource] when
+  /// Assert that a [ToSourceVisitor] will produce the [expectedSource] when
   /// visiting the given [node].
   void _assertSource(String expectedSource, AstNode node) {
     StringBuffer buffer = StringBuffer();
diff --git a/pkg/dart2js_info/CHANGELOG.md b/pkg/dart2js_info/CHANGELOG.md
index ea4fe67b..6a617f6 100644
--- a/pkg/dart2js_info/CHANGELOG.md
+++ b/pkg/dart2js_info/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.6.6
+
+* Added the `comm` tool for finding commonalities between info files.
+
 ## 0.6.5
 
 * Drop unused dependencies.
diff --git a/pkg/dart2js_info/README.md b/pkg/dart2js_info/README.md
index 28ec26f..8257448 100644
--- a/pkg/dart2js_info/README.md
+++ b/pkg/dart2js_info/README.md
@@ -92,7 +92,11 @@
     dependency between functions and fields in your program. Currently it only
     supports the `some_path` query, which shows a dependency path from one
     function to another.
-    
+
+  * [`common`][common]: a tool that reports the common elements of two info
+    files. Commonality is determined by the element's name, file path, and URI
+    but not code size.
+
   * [`diff`][diff]: a tool that diffs two info files and reports which
     program elements have been added, removed, or changed size. This also
     tells which elements are no longer deferred or have become deferred.
@@ -160,6 +164,44 @@
 If the name of a function your are looking for is unique enough, it might be
 sufficient to just write that name as your regular expression.
 
+### Common tool
+
+This command-line tool shows common elements between two info files. It can be
+run as follows:
+
+```console
+$ pub global activate dart2js_info # only needed once
+$ dart2js_info common old.js.info.data new.js.info.data
+```
+
+The tool gives a breakdown of the common elements between the two info files,
+reporting code size discrepancies if they exist.
+Here's an example output snippet:
+
+```
+COMMON ELEMENTS (455 common elements, 70334 bytes -> 70460 bytes)
+========================================================================
+dart:_foreign_helper::: 141 bytes
+dart:_foreign_helper::JS_CONST: 141 bytes
+dart:_foreign_helper::JS_CONST.code: 0 bytes
+dart:_interceptors::: 4052 -> 7968 bytes
+dart:_interceptors::ArrayIterator: 805 bytes
+dart:_interceptors::ArrayIterator.ArrayIterator: 0 bytes
+dart:_interceptors::ArrayIterator._current: 91 bytes
+dart:_interceptors::ArrayIterator._index: 0 bytes
+dart:_interceptors::ArrayIterator._iterable: 0 bytes
+dart:_interceptors::ArrayIterator._length: 0 bytes
+dart:_interceptors::ArrayIterator.current: 0 bytes
+dart:_interceptors::ArrayIterator.moveNext: 406 bytes
+dart:_interceptors::Interceptor: 198 bytes
+dart:_interceptors::Interceptor.toString: 104 -> 182 bytes
+
+```
+
+Common elements are sorted by name by default but can be sorted by size with
+the `--order-by-size` flag. Additionally, the tool can be restricted to
+just packages with the `--packages-only` flag.
+
 ### Diff tool
 
 This command-line tool shows a diff between two info files. It can be run
diff --git a/pkg/dart2js_info/bin/src/common_command.dart b/pkg/dart2js_info/bin/src/common_command.dart
new file mode 100644
index 0000000..8719b11
--- /dev/null
+++ b/pkg/dart2js_info/bin/src/common_command.dart
@@ -0,0 +1,152 @@
+// Copyright (c) 2021, 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 'package:args/command_runner.dart';
+
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/src/common_element.dart';
+import 'package:dart2js_info/src/io.dart';
+import 'package:dart2js_info/src/util.dart';
+
+import 'usage_exception.dart';
+
+/// A command that computes the commonalities between two info files.
+class CommonCommand extends Command<void> with PrintUsageException {
+  @override
+  final String name = "common";
+  @override
+  final String description =
+      "See code element commonalities between two dump-info files.";
+
+  CommonCommand() {
+    argParser.addFlag('packages-only',
+        defaultsTo: false, help: "Show only packages in common");
+    argParser.addFlag('order-by-size',
+        defaultsTo: false,
+        help: "Show output ordered by size in bytes (decreasing). "
+            "If there are size discrepancies, orders by the first "
+            "dump-info file's reported size.");
+  }
+
+  @override
+  void run() async {
+    var args = argResults.rest;
+    if (args.length < 2) {
+      usageException(
+          'Missing arguments, expected two dump-info files to compare');
+      return;
+    }
+
+    var oldInfo = await infoFromFile(args[0]);
+    var newInfo = await infoFromFile(args[1]);
+    var packagesOnly = argResults['packages-only'];
+    var orderBySize = argResults['order-by-size'];
+
+    var commonElements = findCommonalities(oldInfo, newInfo);
+
+    if (packagesOnly) {
+      reportPackages(commonElements, orderBySize: orderBySize);
+    } else {
+      report(commonElements, orderBySize: orderBySize);
+    }
+  }
+}
+
+void report(List<CommonElement> commonElements, {orderBySize = false}) {
+  var oldSizeTotal = 0, newSizeTotal = 0;
+  for (var element in commonElements) {
+    // Only sum sizes from leaf elements so we don't double count.
+    if (element.oldInfo.kind == InfoKind.field ||
+        element.oldInfo.kind == InfoKind.function ||
+        element.oldInfo.kind == InfoKind.closure ||
+        element.oldInfo.kind == InfoKind.typedef) {
+      oldSizeTotal += element.oldInfo.size;
+      newSizeTotal += element.newInfo.size;
+    }
+  }
+
+  _section('COMMON ELEMENTS',
+      elementCount: commonElements.length,
+      oldSizeTotal: oldSizeTotal,
+      newSizeTotal: newSizeTotal);
+
+  if (orderBySize) {
+    commonElements.sort((a, b) => b.oldInfo.size.compareTo(a.oldInfo.size));
+  } else {
+    commonElements.sort((a, b) => a.name.compareTo(b.name));
+  }
+
+  for (var element in commonElements) {
+    var oldSize = element.oldInfo.size;
+    var newSize = element.newInfo.size;
+    if (oldSize == newSize) {
+      print('${element.name}: ${element.oldInfo.size} bytes');
+    } else {
+      print('${element.name}: ${element.oldInfo.size} -> '
+          '${element.newInfo.size} bytes');
+    }
+  }
+}
+
+void reportPackages(List<CommonElement> commonElements, {orderBySize = false}) {
+  // Maps package names to their cumulative size.
+  var oldPackageInfo = <String, int>{};
+  var newPackageInfo = <String, int>{};
+
+  for (int i = 0; i < commonElements.length; i++) {
+    var element = commonElements[i];
+    // Skip non-libraries to avoid double counting elements when accumulating
+    // package-level information.
+    if (element.oldInfo.kind != InfoKind.library) continue;
+
+    var package = packageName(element.oldInfo);
+    if (package == null) continue;
+
+    var oldSize = element.oldInfo.size;
+    var newSize = element.newInfo.size;
+    oldPackageInfo[package] = (oldPackageInfo[package] ?? 0) + oldSize;
+    newPackageInfo[package] = (newPackageInfo[package] ?? 0) + newSize;
+  }
+
+  var oldSizeTotal = 0, newSizeTotal = 0;
+  oldPackageInfo.forEach((oldPackageName, oldPackageSize) {
+    var newPackageSize = newPackageInfo[oldPackageName];
+    oldSizeTotal += oldPackageSize;
+    newSizeTotal += newPackageSize;
+  });
+
+  _section('COMMON ELEMENTS (PACKAGES)',
+      elementCount: oldPackageInfo.keys.length,
+      oldSizeTotal: oldSizeTotal,
+      newSizeTotal: newSizeTotal);
+
+  var packageInfoEntries = oldPackageInfo.entries.toList();
+
+  if (orderBySize) {
+    packageInfoEntries.sort((a, b) => b.value.compareTo(a.value));
+  } else {
+    packageInfoEntries.sort((a, b) => a.key.compareTo(b.key));
+  }
+
+  for (var entry in packageInfoEntries) {
+    var oldSize = entry.value;
+    var newSize = newPackageInfo[entry.key];
+    if (oldSize == newSize) {
+      print('${entry.key}: $oldSize bytes');
+    } else {
+      print('${entry.key}: $oldSize bytes -> $newSize bytes');
+    }
+  }
+}
+
+void _section(String title,
+    {int elementCount, int oldSizeTotal, int newSizeTotal}) {
+  if (oldSizeTotal == newSizeTotal) {
+    print('$title ($elementCount common elements, $oldSizeTotal bytes)');
+  } else {
+    print('$title ($elementCount common elements, '
+        '$oldSizeTotal bytes -> $newSizeTotal bytes)');
+  }
+  print('=' * 72);
+}
diff --git a/pkg/dart2js_info/bin/tools.dart b/pkg/dart2js_info/bin/tools.dart
index 26a188b..9e2cda8 100644
--- a/pkg/dart2js_info/bin/tools.dart
+++ b/pkg/dart2js_info/bin/tools.dart
@@ -5,6 +5,7 @@
 import 'package:args/command_runner.dart';
 
 import 'src/code_deps.dart';
+import 'src/common_command.dart';
 import 'src/coverage_log_server.dart';
 import 'src/debug_info.dart';
 import 'src/diff.dart';
@@ -23,6 +24,7 @@
   var commandRunner = CommandRunner("dart2js_info",
       "collection of tools to digest the output of dart2js's --dump-info")
     ..addCommand(CodeDepsCommand())
+    ..addCommand(CommonCommand())
     ..addCommand(CoverageLogServerCommand())
     ..addCommand(DebugCommand())
     ..addCommand(DiffCommand())
diff --git a/pkg/dart2js_info/lib/src/common_element.dart b/pkg/dart2js_info/lib/src/common_element.dart
new file mode 100644
index 0000000..788d6f2
--- /dev/null
+++ b/pkg/dart2js_info/lib/src/common_element.dart
@@ -0,0 +1,116 @@
+import 'package:dart2js_info/info.dart';
+import 'package:dart2js_info/src/util.dart';
+
+class CommonElement {
+  final BasicInfo oldInfo;
+  final BasicInfo newInfo;
+
+  CommonElement(this.oldInfo, this.newInfo);
+
+  get name => longName(oldInfo, useLibraryUri: true);
+}
+
+List<CommonElement> findCommonalities(AllInfo oldInfo, AllInfo newInfo) {
+  var finder = _InfoCommonElementFinder(oldInfo, newInfo);
+  finder.run();
+  return finder.commonElements;
+}
+
+class _InfoCommonElementFinder extends InfoVisitor<void> {
+  final AllInfo _old;
+  final AllInfo _new;
+
+  BasicInfo _other;
+
+  List<CommonElement> commonElements = <CommonElement>[];
+
+  _InfoCommonElementFinder(this._old, this._new);
+
+  void run() {
+    _commonList(_old.libraries, _new.libraries);
+  }
+
+  @override
+  visitAll(AllInfo info) {
+    throw StateError('should not run common on AllInfo');
+  }
+
+  @override
+  visitProgram(ProgramInfo info) {
+    throw StateError('should not run common on ProgramInfo');
+  }
+
+  @override
+  visitOutput(OutputUnitInfo info) {
+    throw StateError('should not run common on OutputUnitInfo');
+  }
+
+  @override
+  visitConstant(ConstantInfo info) {
+    throw StateError('should not run common on ConstantInfo');
+  }
+
+  @override
+  visitLibrary(LibraryInfo info) {
+    var other = _other as LibraryInfo;
+    commonElements.add(CommonElement(info, other));
+    _commonList(info.topLevelVariables, other.topLevelVariables);
+    _commonList(info.topLevelFunctions, other.topLevelFunctions);
+    _commonList(info.classes, other.classes);
+  }
+
+  @override
+  visitClass(ClassInfo info) {
+    var other = _other as ClassInfo;
+    commonElements.add(CommonElement(info, other));
+    _commonList(info.fields, other.fields);
+    _commonList(info.functions, other.functions);
+  }
+
+  @override
+  visitClassType(ClassTypeInfo info) {
+    var other = _other as ClassInfo;
+    commonElements.add(CommonElement(info, other));
+  }
+
+  @override
+  visitClosure(ClosureInfo info) {
+    var other = _other as ClosureInfo;
+    commonElements.add(CommonElement(info, other));
+    _commonList([info.function], [other.function]);
+  }
+
+  @override
+  visitField(FieldInfo info) {
+    var other = _other as FieldInfo;
+    commonElements.add(CommonElement(info, other));
+    _commonList(info.closures, other.closures);
+  }
+
+  @override
+  visitFunction(FunctionInfo info) {
+    var other = _other as FunctionInfo;
+    commonElements.add(CommonElement(info, other));
+    _commonList(info.closures, other.closures);
+  }
+
+  @override
+  visitTypedef(TypedefInfo info) {
+    var other = _other as ClassInfo;
+    commonElements.add(CommonElement(info, other));
+  }
+
+  void _commonList(List<BasicInfo> oldInfos, List<BasicInfo> newInfos) {
+    var newNames = <String, BasicInfo>{};
+    for (var newInfo in newInfos) {
+      newNames[longName(newInfo, useLibraryUri: true)] = newInfo;
+    }
+    for (var oldInfo in oldInfos) {
+      var oldName = longName(oldInfo, useLibraryUri: true);
+      if (newNames.containsKey(oldName)) {
+        _other = newNames[oldName];
+        oldInfo.accept(this);
+      }
+    }
+  }
+}
diff --git a/pkg/dart2js_info/lib/src/util.dart b/pkg/dart2js_info/lib/src/util.dart
index e435458..eebb1c7 100644
--- a/pkg/dart2js_info/lib/src/util.dart
+++ b/pkg/dart2js_info/lib/src/util.dart
@@ -90,6 +90,19 @@
   return sb.toString();
 }
 
+/// Provides the package name associated with [info] or null otherwise.
+String packageName(Info info) {
+  while (info.parent != null) {
+    info = info.parent;
+  }
+  if (info is LibraryInfo) {
+    if (info.uri.scheme == 'package') {
+      return '${info.uri}'.split('/').first;
+    }
+  }
+  return null;
+}
+
 /// Produce a string containing [value] padded with white space up to [n] chars.
 pad(value, n, {bool right = false}) {
   var s = '$value';
diff --git a/runtime/platform/thread_sanitizer.h b/runtime/platform/thread_sanitizer.h
index baff130..b82fde9 100644
--- a/runtime/platform/thread_sanitizer.h
+++ b/runtime/platform/thread_sanitizer.h
@@ -21,4 +21,16 @@
 #define NO_SANITIZE_THREAD
 #endif
 
+#if defined(USING_THREAD_SANITIZER)
+#define DO_IF_TSAN(CODE) CODE
+#else
+#define DO_IF_TSAN(CODE)
+#endif
+
+#if defined(USING_THREAD_SANITIZER)
+#define DO_IF_NOT_TSAN(CODE)
+#else
+#define DO_IF_NOT_TSAN(CODE) CODE
+#endif
+
 #endif  // RUNTIME_PLATFORM_THREAD_SANITIZER_H_
diff --git a/runtime/tests/vm/dart/regress47472_test.dart b/runtime/tests/vm/dart/regress47472_test.dart
new file mode 100644
index 0000000..a3f8f8b
--- /dev/null
+++ b/runtime/tests/vm/dart/regress47472_test.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2021, 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.
+
+main() {
+  for (int i = 0; i < 1000000; ++i) {
+    try {
+      throw 'a';
+    } catch (e, s) {}
+  }
+}
diff --git a/runtime/tests/vm/dart_2/regress47472_test.dart b/runtime/tests/vm/dart_2/regress47472_test.dart
new file mode 100644
index 0000000..a3f8f8b
--- /dev/null
+++ b/runtime/tests/vm/dart_2/regress47472_test.dart
@@ -0,0 +1,11 @@
+// Copyright (c) 2021, 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.
+
+main() {
+  for (int i = 0; i < 1000000; ++i) {
+    try {
+      throw 'a';
+    } catch (e, s) {}
+  }
+}
diff --git a/runtime/vm/compiler/backend/il_x64.cc b/runtime/vm/compiler/backend/il_x64.cc
index c770204..1e568f2 100644
--- a/runtime/vm/compiler/backend/il_x64.cc
+++ b/runtime/vm/compiler/backend/il_x64.cc
@@ -1154,8 +1154,9 @@
   // Push the result place holder initialized to NULL.
   __ PushObject(Object::null_object());
 
-  // Pass a pointer to the first argument in RAX.
-  __ leaq(RAX, compiler::Address(RSP, ArgumentCount() * kWordSize));
+  // Pass a pointer to the first argument in R13 (we avoid using RAX here to
+  // simplify the stub code that will call native code).
+  __ leaq(R13, compiler::Address(RSP, ArgumentCount() * kWordSize));
 
   __ LoadImmediate(R10, compiler::Immediate(argc_tag));
   const Code* stub;
diff --git a/runtime/vm/compiler/runtime_api.cc b/runtime/vm/compiler/runtime_api.cc
index b1943f6..abb824d 100644
--- a/runtime/vm/compiler/runtime_api.cc
+++ b/runtime/vm/compiler/runtime_api.cc
@@ -2,6 +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.
 
+#include "platform/thread_sanitizer.h"
+
 #include "vm/compiler/runtime_api.h"
 
 #include "vm/object.h"
diff --git a/runtime/vm/compiler/runtime_api.h b/runtime/vm/compiler/runtime_api.h
index 5ce613d..8d9a7a1 100644
--- a/runtime/vm/compiler/runtime_api.h
+++ b/runtime/vm/compiler/runtime_api.h
@@ -19,7 +19,9 @@
 // in compiler::target namespace.
 
 #include "platform/globals.h"
+#include "platform/thread_sanitizer.h"
 #include "platform/utils.h"
+
 #include "vm/allocation.h"
 #include "vm/bitfield.h"
 #include "vm/bss_relocs.h"
@@ -1059,6 +1061,15 @@
   FINAL_CLASS();
 };
 
+class TsanUtils : public AllStatic {
+ public:
+  static word setjmp_function_offset();
+  static word setjmp_buffer_offset();
+  static word exception_pc_offset();
+  static word exception_sp_offset();
+  static word exception_fp_offset();
+};
+
 class Thread : public AllStatic {
  public:
   static word api_top_scope_offset();
@@ -1122,6 +1133,8 @@
 
   static word callback_code_offset();
   static word callback_stack_return_offset();
+  static word tsan_utils_offset();
+  static word jump_to_frame_entry_point_offset();
 
   static word AllocateArray_entry_point_offset();
   static word write_barrier_code_offset();
diff --git a/runtime/vm/compiler/runtime_offsets_extracted.h b/runtime/vm/compiler/runtime_offsets_extracted.h
index 4ade729..2a33ea5 100644
--- a/runtime/vm/compiler/runtime_offsets_extracted.h
+++ b/runtime/vm/compiler/runtime_offsets_extracted.h
@@ -246,11 +246,11 @@
 static constexpr dart::compiler::target::word String_length_offset = 4;
 static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4;
 static constexpr dart::compiler::target::word
-    Thread_AllocateArray_entry_point_offset = 376;
+    Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    748;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     752;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    756;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 128;
 static constexpr dart::compiler::target::word
@@ -275,22 +275,22 @@
     Thread_allocate_object_slow_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 204;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 788;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 792;
 static constexpr dart::compiler::target::word
-    Thread_auto_scope_native_wrapper_entry_point_offset = 340;
+    Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
 static constexpr dart::compiler::target::word Thread_bool_true_offset = 116;
 static constexpr dart::compiler::target::word
-    Thread_bootstrap_native_wrapper_entry_point_offset = 332;
+    Thread_bootstrap_native_wrapper_entry_point_offset = 336;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 144;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 800;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 808;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 792;
+    Thread_double_truncate_round_supported_offset = 796;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 232;
@@ -299,14 +299,14 @@
 static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
     236;
 static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
-    356;
+    360;
 static constexpr dart::compiler::target::word
-    Thread_double_negate_address_offset = 352;
+    Thread_double_negate_address_offset = 356;
 static constexpr dart::compiler::target::word Thread_end_offset = 52;
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    768;
+    772;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 260;
 static constexpr dart::compiler::target::word
@@ -318,21 +318,21 @@
 static constexpr dart::compiler::target::word
     Thread_fix_callers_target_code_offset = 132;
 static constexpr dart::compiler::target::word
-    Thread_float_absolute_address_offset = 368;
+    Thread_float_absolute_address_offset = 372;
 static constexpr dart::compiler::target::word
-    Thread_float_negate_address_offset = 364;
+    Thread_float_negate_address_offset = 368;
 static constexpr dart::compiler::target::word Thread_float_not_address_offset =
-    360;
+    364;
 static constexpr dart::compiler::target::word
-    Thread_float_zerow_address_offset = 372;
+    Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    756;
+    760;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 140;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    784;
+    788;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 804;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 812;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -350,7 +350,7 @@
 static constexpr dart::compiler::target::word
     Thread_switchable_call_miss_stub_offset = 216;
 static constexpr dart::compiler::target::word
-    Thread_no_scope_native_wrapper_entry_point_offset = 336;
+    Thread_no_scope_native_wrapper_entry_point_offset = 340;
 static constexpr dart::compiler::target::word
     Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 152;
 static constexpr dart::compiler::target::word
@@ -373,16 +373,16 @@
     Thread_range_error_shared_without_fpu_regs_stub_offset = 180;
 static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
 static constexpr dart::compiler::target::word
-    Thread_predefined_symbols_address_offset = 344;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 760;
+    Thread_predefined_symbols_address_offset = 348;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 764;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 764;
+    Thread_saved_shadow_call_stack_offset = 768;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    772;
+    776;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    Thread_slow_type_test_entry_point_offset = 328;
+    Thread_slow_type_test_entry_point_offset = 332;
 static constexpr dart::compiler::target::word Thread_stack_limit_offset = 28;
 static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
     56;
@@ -414,9 +414,21 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     32;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 776;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 780;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 780;
+    Thread_callback_stack_return_offset = 784;
+static constexpr dart::compiler::target::word
+    Thread_jump_to_frame_entry_point_offset = 328;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 800;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
+    0;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
+    4;
+static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset = 8;
+static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset =
+    12;
+static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset =
+    16;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
 static constexpr dart::compiler::target::word Type_arguments_offset = 12;
@@ -476,7 +488,7 @@
     4, 12, 8, 16};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        716, 720, 724, 728, 732, -1, 736, -1, 740, 744, -1, -1, -1, -1, -1, -1};
+        720, 724, 728, 732, 736, -1, 740, -1, 744, 748, -1, -1, -1, -1, -1, -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
 static constexpr dart::compiler::target::word Array_header_size = 12;
@@ -798,11 +810,11 @@
 static constexpr dart::compiler::target::word String_length_offset = 8;
 static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
 static constexpr dart::compiler::target::word
-    Thread_AllocateArray_entry_point_offset = 728;
+    Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1496;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     1504;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    1512;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -828,22 +840,22 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1576;
+    1584;
 static constexpr dart::compiler::target::word
-    Thread_auto_scope_native_wrapper_entry_point_offset = 656;
+    Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
 static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
 static constexpr dart::compiler::target::word
-    Thread_bootstrap_native_wrapper_entry_point_offset = 640;
+    Thread_bootstrap_native_wrapper_entry_point_offset = 648;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1592;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1616;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1584;
+    Thread_double_truncate_round_supported_offset = 1592;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 440;
@@ -852,14 +864,14 @@
 static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
     448;
 static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
-    688;
+    696;
 static constexpr dart::compiler::target::word
-    Thread_double_negate_address_offset = 680;
+    Thread_double_negate_address_offset = 688;
 static constexpr dart::compiler::target::word Thread_end_offset = 104;
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1536;
+    1544;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -871,22 +883,22 @@
 static constexpr dart::compiler::target::word
     Thread_fix_callers_target_code_offset = 240;
 static constexpr dart::compiler::target::word
-    Thread_float_absolute_address_offset = 712;
+    Thread_float_absolute_address_offset = 720;
 static constexpr dart::compiler::target::word
-    Thread_float_negate_address_offset = 704;
+    Thread_float_negate_address_offset = 712;
 static constexpr dart::compiler::target::word Thread_float_not_address_offset =
-    696;
+    704;
 static constexpr dart::compiler::target::word
-    Thread_float_zerow_address_offset = 720;
+    Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1512;
+    1520;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1568;
+    1576;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1600;
+    1624;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -904,7 +916,7 @@
 static constexpr dart::compiler::target::word
     Thread_switchable_call_miss_stub_offset = 408;
 static constexpr dart::compiler::target::word
-    Thread_no_scope_native_wrapper_entry_point_offset = 648;
+    Thread_no_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word
     Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280;
 static constexpr dart::compiler::target::word
@@ -927,16 +939,16 @@
     Thread_range_error_shared_without_fpu_regs_stub_offset = 336;
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
-    Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1520;
+    Thread_predefined_symbols_address_offset = 672;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1528;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1528;
+    Thread_saved_shadow_call_stack_offset = 1536;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1544;
+    1552;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
-    Thread_slow_type_test_entry_point_offset = 632;
+    Thread_slow_type_test_entry_point_offset = 640;
 static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
 static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
     112;
@@ -969,9 +981,22 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1560;
+    Thread_callback_stack_return_offset = 1568;
+static constexpr dart::compiler::target::word
+    Thread_jump_to_frame_entry_point_offset = 632;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1600;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
+    0;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
+    8;
+static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset =
+    16;
+static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset =
+    24;
+static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset =
+    32;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -1032,8 +1057,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1408, 1416, 1424, 1432, -1,   -1,   1440, 1448,
-        1456, 1464, 1472, -1,   1480, 1488, -1,   -1};
+        1416, 1424, 1432, 1440, -1,   -1,   1448, 1456,
+        1464, 1472, 1480, -1,   1488, 1496, -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -1351,11 +1376,11 @@
 static constexpr dart::compiler::target::word String_length_offset = 4;
 static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4;
 static constexpr dart::compiler::target::word
-    Thread_AllocateArray_entry_point_offset = 376;
+    Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    716;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     720;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    724;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 128;
 static constexpr dart::compiler::target::word
@@ -1380,22 +1405,22 @@
     Thread_allocate_object_slow_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 204;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 756;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 760;
 static constexpr dart::compiler::target::word
-    Thread_auto_scope_native_wrapper_entry_point_offset = 340;
+    Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
 static constexpr dart::compiler::target::word Thread_bool_true_offset = 116;
 static constexpr dart::compiler::target::word
-    Thread_bootstrap_native_wrapper_entry_point_offset = 332;
+    Thread_bootstrap_native_wrapper_entry_point_offset = 336;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 144;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 768;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 776;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 760;
+    Thread_double_truncate_round_supported_offset = 764;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 232;
@@ -1404,14 +1429,14 @@
 static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
     236;
 static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
-    356;
+    360;
 static constexpr dart::compiler::target::word
-    Thread_double_negate_address_offset = 352;
+    Thread_double_negate_address_offset = 356;
 static constexpr dart::compiler::target::word Thread_end_offset = 52;
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    736;
+    740;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 260;
 static constexpr dart::compiler::target::word
@@ -1423,21 +1448,21 @@
 static constexpr dart::compiler::target::word
     Thread_fix_callers_target_code_offset = 132;
 static constexpr dart::compiler::target::word
-    Thread_float_absolute_address_offset = 368;
+    Thread_float_absolute_address_offset = 372;
 static constexpr dart::compiler::target::word
-    Thread_float_negate_address_offset = 364;
+    Thread_float_negate_address_offset = 368;
 static constexpr dart::compiler::target::word Thread_float_not_address_offset =
-    360;
+    364;
 static constexpr dart::compiler::target::word
-    Thread_float_zerow_address_offset = 372;
+    Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    724;
+    728;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 140;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    752;
+    756;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 772;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 780;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -1455,7 +1480,7 @@
 static constexpr dart::compiler::target::word
     Thread_switchable_call_miss_stub_offset = 216;
 static constexpr dart::compiler::target::word
-    Thread_no_scope_native_wrapper_entry_point_offset = 336;
+    Thread_no_scope_native_wrapper_entry_point_offset = 340;
 static constexpr dart::compiler::target::word
     Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 152;
 static constexpr dart::compiler::target::word
@@ -1478,16 +1503,16 @@
     Thread_range_error_shared_without_fpu_regs_stub_offset = 180;
 static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
 static constexpr dart::compiler::target::word
-    Thread_predefined_symbols_address_offset = 344;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 728;
+    Thread_predefined_symbols_address_offset = 348;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 732;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 732;
+    Thread_saved_shadow_call_stack_offset = 736;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    740;
+    744;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    Thread_slow_type_test_entry_point_offset = 328;
+    Thread_slow_type_test_entry_point_offset = 332;
 static constexpr dart::compiler::target::word Thread_stack_limit_offset = 28;
 static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
     56;
@@ -1519,9 +1544,21 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     32;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 744;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 748;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 748;
+    Thread_callback_stack_return_offset = 752;
+static constexpr dart::compiler::target::word
+    Thread_jump_to_frame_entry_point_offset = 328;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 768;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
+    0;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
+    4;
+static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset = 8;
+static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset =
+    12;
+static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset =
+    16;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
 static constexpr dart::compiler::target::word Type_arguments_offset = 12;
@@ -1900,11 +1937,11 @@
 static constexpr dart::compiler::target::word String_length_offset = 8;
 static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
 static constexpr dart::compiler::target::word
-    Thread_AllocateArray_entry_point_offset = 728;
+    Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1560;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     1568;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    1576;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -1930,22 +1967,22 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1640;
+    1648;
 static constexpr dart::compiler::target::word
-    Thread_auto_scope_native_wrapper_entry_point_offset = 656;
+    Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
 static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
 static constexpr dart::compiler::target::word
-    Thread_bootstrap_native_wrapper_entry_point_offset = 640;
+    Thread_bootstrap_native_wrapper_entry_point_offset = 648;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1656;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1648;
+    Thread_double_truncate_round_supported_offset = 1656;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 440;
@@ -1954,14 +1991,14 @@
 static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
     448;
 static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
-    688;
+    696;
 static constexpr dart::compiler::target::word
-    Thread_double_negate_address_offset = 680;
+    Thread_double_negate_address_offset = 688;
 static constexpr dart::compiler::target::word Thread_end_offset = 104;
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1600;
+    1608;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -1973,22 +2010,22 @@
 static constexpr dart::compiler::target::word
     Thread_fix_callers_target_code_offset = 240;
 static constexpr dart::compiler::target::word
-    Thread_float_absolute_address_offset = 712;
+    Thread_float_absolute_address_offset = 720;
 static constexpr dart::compiler::target::word
-    Thread_float_negate_address_offset = 704;
+    Thread_float_negate_address_offset = 712;
 static constexpr dart::compiler::target::word Thread_float_not_address_offset =
-    696;
+    704;
 static constexpr dart::compiler::target::word
-    Thread_float_zerow_address_offset = 720;
+    Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1576;
+    1584;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1632;
+    1640;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -2006,7 +2043,7 @@
 static constexpr dart::compiler::target::word
     Thread_switchable_call_miss_stub_offset = 408;
 static constexpr dart::compiler::target::word
-    Thread_no_scope_native_wrapper_entry_point_offset = 648;
+    Thread_no_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word
     Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280;
 static constexpr dart::compiler::target::word
@@ -2029,16 +2066,16 @@
     Thread_range_error_shared_without_fpu_regs_stub_offset = 336;
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
-    Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584;
+    Thread_predefined_symbols_address_offset = 672;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1592;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1592;
+    Thread_saved_shadow_call_stack_offset = 1600;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1608;
+    1616;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
-    Thread_slow_type_test_entry_point_offset = 632;
+    Thread_slow_type_test_entry_point_offset = 640;
 static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
 static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
     112;
@@ -2071,9 +2108,22 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1616;
+    1624;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1624;
+    Thread_callback_stack_return_offset = 1632;
+static constexpr dart::compiler::target::word
+    Thread_jump_to_frame_entry_point_offset = 632;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
+    0;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
+    8;
+static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset =
+    16;
+static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset =
+    24;
+static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset =
+    32;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -2134,9 +2184,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488,
-        1496, 1504, 1512, 1520, -1,   -1,   -1,   -1,   1528, 1536, -1,
-        -1,   1544, 1552, 1560, -1,   -1,   -1,   -1,   -1,   -1};
+        1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496,
+        1504, 1512, 1520, 1528, -1,   -1,   -1,   -1,   1536, 1544, -1,
+        -1,   1552, 1560, 1568, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -2456,11 +2506,11 @@
 static constexpr dart::compiler::target::word String_length_offset = 8;
 static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
 static constexpr dart::compiler::target::word
-    Thread_AllocateArray_entry_point_offset = 728;
+    Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1496;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     1504;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    1512;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -2486,22 +2536,22 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1576;
+    1584;
 static constexpr dart::compiler::target::word
-    Thread_auto_scope_native_wrapper_entry_point_offset = 656;
+    Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
 static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
 static constexpr dart::compiler::target::word
-    Thread_bootstrap_native_wrapper_entry_point_offset = 640;
+    Thread_bootstrap_native_wrapper_entry_point_offset = 648;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1592;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1616;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1584;
+    Thread_double_truncate_round_supported_offset = 1592;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 440;
@@ -2510,14 +2560,14 @@
 static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
     448;
 static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
-    688;
+    696;
 static constexpr dart::compiler::target::word
-    Thread_double_negate_address_offset = 680;
+    Thread_double_negate_address_offset = 688;
 static constexpr dart::compiler::target::word Thread_end_offset = 104;
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1536;
+    1544;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -2529,22 +2579,22 @@
 static constexpr dart::compiler::target::word
     Thread_fix_callers_target_code_offset = 240;
 static constexpr dart::compiler::target::word
-    Thread_float_absolute_address_offset = 712;
+    Thread_float_absolute_address_offset = 720;
 static constexpr dart::compiler::target::word
-    Thread_float_negate_address_offset = 704;
+    Thread_float_negate_address_offset = 712;
 static constexpr dart::compiler::target::word Thread_float_not_address_offset =
-    696;
+    704;
 static constexpr dart::compiler::target::word
-    Thread_float_zerow_address_offset = 720;
+    Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1512;
+    1520;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1568;
+    1576;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1600;
+    1624;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -2562,7 +2612,7 @@
 static constexpr dart::compiler::target::word
     Thread_switchable_call_miss_stub_offset = 408;
 static constexpr dart::compiler::target::word
-    Thread_no_scope_native_wrapper_entry_point_offset = 648;
+    Thread_no_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word
     Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280;
 static constexpr dart::compiler::target::word
@@ -2585,16 +2635,16 @@
     Thread_range_error_shared_without_fpu_regs_stub_offset = 336;
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
-    Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1520;
+    Thread_predefined_symbols_address_offset = 672;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1528;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1528;
+    Thread_saved_shadow_call_stack_offset = 1536;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1544;
+    1552;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
-    Thread_slow_type_test_entry_point_offset = 632;
+    Thread_slow_type_test_entry_point_offset = 640;
 static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
 static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
     112;
@@ -2627,9 +2677,22 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1560;
+    Thread_callback_stack_return_offset = 1568;
+static constexpr dart::compiler::target::word
+    Thread_jump_to_frame_entry_point_offset = 632;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1600;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
+    0;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
+    8;
+static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset =
+    16;
+static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset =
+    24;
+static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset =
+    32;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -2690,8 +2753,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1408, 1416, 1424, 1432, -1,   -1,   1440, 1448,
-        1456, 1464, 1472, -1,   1480, 1488, -1,   -1};
+        1416, 1424, 1432, 1440, -1,   -1,   1448, 1456,
+        1464, 1472, 1480, -1,   1488, 1496, -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 16;
@@ -3011,11 +3074,11 @@
 static constexpr dart::compiler::target::word String_length_offset = 8;
 static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
 static constexpr dart::compiler::target::word
-    Thread_AllocateArray_entry_point_offset = 728;
+    Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1560;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     1568;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    1576;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -3041,22 +3104,22 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1640;
+    1648;
 static constexpr dart::compiler::target::word
-    Thread_auto_scope_native_wrapper_entry_point_offset = 656;
+    Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
 static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
 static constexpr dart::compiler::target::word
-    Thread_bootstrap_native_wrapper_entry_point_offset = 640;
+    Thread_bootstrap_native_wrapper_entry_point_offset = 648;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1656;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1648;
+    Thread_double_truncate_round_supported_offset = 1656;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 440;
@@ -3065,14 +3128,14 @@
 static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
     448;
 static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
-    688;
+    696;
 static constexpr dart::compiler::target::word
-    Thread_double_negate_address_offset = 680;
+    Thread_double_negate_address_offset = 688;
 static constexpr dart::compiler::target::word Thread_end_offset = 104;
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1600;
+    1608;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -3084,22 +3147,22 @@
 static constexpr dart::compiler::target::word
     Thread_fix_callers_target_code_offset = 240;
 static constexpr dart::compiler::target::word
-    Thread_float_absolute_address_offset = 712;
+    Thread_float_absolute_address_offset = 720;
 static constexpr dart::compiler::target::word
-    Thread_float_negate_address_offset = 704;
+    Thread_float_negate_address_offset = 712;
 static constexpr dart::compiler::target::word Thread_float_not_address_offset =
-    696;
+    704;
 static constexpr dart::compiler::target::word
-    Thread_float_zerow_address_offset = 720;
+    Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1576;
+    1584;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1632;
+    1640;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -3117,7 +3180,7 @@
 static constexpr dart::compiler::target::word
     Thread_switchable_call_miss_stub_offset = 408;
 static constexpr dart::compiler::target::word
-    Thread_no_scope_native_wrapper_entry_point_offset = 648;
+    Thread_no_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word
     Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280;
 static constexpr dart::compiler::target::word
@@ -3140,16 +3203,16 @@
     Thread_range_error_shared_without_fpu_regs_stub_offset = 336;
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
-    Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584;
+    Thread_predefined_symbols_address_offset = 672;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1592;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1592;
+    Thread_saved_shadow_call_stack_offset = 1600;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1608;
+    1616;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
-    Thread_slow_type_test_entry_point_offset = 632;
+    Thread_slow_type_test_entry_point_offset = 640;
 static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
 static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
     112;
@@ -3182,9 +3245,22 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1616;
+    1624;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1624;
+    Thread_callback_stack_return_offset = 1632;
+static constexpr dart::compiler::target::word
+    Thread_jump_to_frame_entry_point_offset = 632;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
+    0;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
+    8;
+static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset =
+    16;
+static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset =
+    24;
+static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset =
+    32;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -3245,9 +3321,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488,
-        1496, 1504, 1512, 1520, -1,   -1,   -1,   -1,   1528, 1536, -1,
-        -1,   1544, 1552, 1560, -1,   -1,   -1,   -1,   -1,   -1};
+        1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496,
+        1504, 1512, 1520, 1528, -1,   -1,   -1,   -1,   1536, 1544, -1,
+        -1,   1552, 1560, 1568, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 16;
@@ -3561,11 +3637,11 @@
 static constexpr dart::compiler::target::word String_length_offset = 4;
 static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4;
 static constexpr dart::compiler::target::word
-    Thread_AllocateArray_entry_point_offset = 376;
+    Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    748;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     752;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    756;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 128;
 static constexpr dart::compiler::target::word
@@ -3590,22 +3666,22 @@
     Thread_allocate_object_slow_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 204;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 788;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 792;
 static constexpr dart::compiler::target::word
-    Thread_auto_scope_native_wrapper_entry_point_offset = 340;
+    Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
 static constexpr dart::compiler::target::word Thread_bool_true_offset = 116;
 static constexpr dart::compiler::target::word
-    Thread_bootstrap_native_wrapper_entry_point_offset = 332;
+    Thread_bootstrap_native_wrapper_entry_point_offset = 336;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 144;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 800;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 808;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 792;
+    Thread_double_truncate_round_supported_offset = 796;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 232;
@@ -3614,14 +3690,14 @@
 static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
     236;
 static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
-    356;
+    360;
 static constexpr dart::compiler::target::word
-    Thread_double_negate_address_offset = 352;
+    Thread_double_negate_address_offset = 356;
 static constexpr dart::compiler::target::word Thread_end_offset = 52;
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    768;
+    772;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 260;
 static constexpr dart::compiler::target::word
@@ -3633,21 +3709,21 @@
 static constexpr dart::compiler::target::word
     Thread_fix_callers_target_code_offset = 132;
 static constexpr dart::compiler::target::word
-    Thread_float_absolute_address_offset = 368;
+    Thread_float_absolute_address_offset = 372;
 static constexpr dart::compiler::target::word
-    Thread_float_negate_address_offset = 364;
+    Thread_float_negate_address_offset = 368;
 static constexpr dart::compiler::target::word Thread_float_not_address_offset =
-    360;
+    364;
 static constexpr dart::compiler::target::word
-    Thread_float_zerow_address_offset = 372;
+    Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    756;
+    760;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 140;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    784;
+    788;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 804;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 812;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -3665,7 +3741,7 @@
 static constexpr dart::compiler::target::word
     Thread_switchable_call_miss_stub_offset = 216;
 static constexpr dart::compiler::target::word
-    Thread_no_scope_native_wrapper_entry_point_offset = 336;
+    Thread_no_scope_native_wrapper_entry_point_offset = 340;
 static constexpr dart::compiler::target::word
     Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 152;
 static constexpr dart::compiler::target::word
@@ -3688,16 +3764,16 @@
     Thread_range_error_shared_without_fpu_regs_stub_offset = 180;
 static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
 static constexpr dart::compiler::target::word
-    Thread_predefined_symbols_address_offset = 344;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 760;
+    Thread_predefined_symbols_address_offset = 348;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 764;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 764;
+    Thread_saved_shadow_call_stack_offset = 768;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    772;
+    776;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    Thread_slow_type_test_entry_point_offset = 328;
+    Thread_slow_type_test_entry_point_offset = 332;
 static constexpr dart::compiler::target::word Thread_stack_limit_offset = 28;
 static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
     56;
@@ -3729,9 +3805,21 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     32;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 776;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 780;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 780;
+    Thread_callback_stack_return_offset = 784;
+static constexpr dart::compiler::target::word
+    Thread_jump_to_frame_entry_point_offset = 328;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 800;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
+    0;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
+    4;
+static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset = 8;
+static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset =
+    12;
+static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset =
+    16;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
 static constexpr dart::compiler::target::word Type_arguments_offset = 12;
@@ -3791,7 +3879,7 @@
     4, 12, 8, 16};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        716, 720, 724, 728, 732, -1, 736, -1, 740, 744, -1, -1, -1, -1, -1, -1};
+        720, 724, 728, 732, 736, -1, 740, -1, 744, 748, -1, -1, -1, -1, -1, -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 12;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 8;
 static constexpr dart::compiler::target::word Array_header_size = 12;
@@ -4107,11 +4195,11 @@
 static constexpr dart::compiler::target::word String_length_offset = 8;
 static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
 static constexpr dart::compiler::target::word
-    Thread_AllocateArray_entry_point_offset = 728;
+    Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1496;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     1504;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    1512;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -4137,22 +4225,22 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1576;
+    1584;
 static constexpr dart::compiler::target::word
-    Thread_auto_scope_native_wrapper_entry_point_offset = 656;
+    Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
 static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
 static constexpr dart::compiler::target::word
-    Thread_bootstrap_native_wrapper_entry_point_offset = 640;
+    Thread_bootstrap_native_wrapper_entry_point_offset = 648;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1592;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1616;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1584;
+    Thread_double_truncate_round_supported_offset = 1592;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 440;
@@ -4161,14 +4249,14 @@
 static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
     448;
 static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
-    688;
+    696;
 static constexpr dart::compiler::target::word
-    Thread_double_negate_address_offset = 680;
+    Thread_double_negate_address_offset = 688;
 static constexpr dart::compiler::target::word Thread_end_offset = 104;
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1536;
+    1544;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -4180,22 +4268,22 @@
 static constexpr dart::compiler::target::word
     Thread_fix_callers_target_code_offset = 240;
 static constexpr dart::compiler::target::word
-    Thread_float_absolute_address_offset = 712;
+    Thread_float_absolute_address_offset = 720;
 static constexpr dart::compiler::target::word
-    Thread_float_negate_address_offset = 704;
+    Thread_float_negate_address_offset = 712;
 static constexpr dart::compiler::target::word Thread_float_not_address_offset =
-    696;
+    704;
 static constexpr dart::compiler::target::word
-    Thread_float_zerow_address_offset = 720;
+    Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1512;
+    1520;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1568;
+    1576;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1600;
+    1624;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -4213,7 +4301,7 @@
 static constexpr dart::compiler::target::word
     Thread_switchable_call_miss_stub_offset = 408;
 static constexpr dart::compiler::target::word
-    Thread_no_scope_native_wrapper_entry_point_offset = 648;
+    Thread_no_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word
     Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280;
 static constexpr dart::compiler::target::word
@@ -4236,16 +4324,16 @@
     Thread_range_error_shared_without_fpu_regs_stub_offset = 336;
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
-    Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1520;
+    Thread_predefined_symbols_address_offset = 672;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1528;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1528;
+    Thread_saved_shadow_call_stack_offset = 1536;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1544;
+    1552;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
-    Thread_slow_type_test_entry_point_offset = 632;
+    Thread_slow_type_test_entry_point_offset = 640;
 static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
 static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
     112;
@@ -4278,9 +4366,22 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1560;
+    Thread_callback_stack_return_offset = 1568;
+static constexpr dart::compiler::target::word
+    Thread_jump_to_frame_entry_point_offset = 632;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1600;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
+    0;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
+    8;
+static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset =
+    16;
+static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset =
+    24;
+static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset =
+    32;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -4341,8 +4442,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1408, 1416, 1424, 1432, -1,   -1,   1440, 1448,
-        1456, 1464, 1472, -1,   1480, 1488, -1,   -1};
+        1416, 1424, 1432, 1440, -1,   -1,   1448, 1456,
+        1464, 1472, 1480, -1,   1488, 1496, -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -4654,11 +4755,11 @@
 static constexpr dart::compiler::target::word String_length_offset = 4;
 static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 4;
 static constexpr dart::compiler::target::word
-    Thread_AllocateArray_entry_point_offset = 376;
+    Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    716;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     720;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    724;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 128;
 static constexpr dart::compiler::target::word
@@ -4683,22 +4784,22 @@
     Thread_allocate_object_slow_entry_point_offset = 296;
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 204;
-static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 756;
+static constexpr dart::compiler::target::word Thread_api_top_scope_offset = 760;
 static constexpr dart::compiler::target::word
-    Thread_auto_scope_native_wrapper_entry_point_offset = 340;
+    Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 120;
 static constexpr dart::compiler::target::word Thread_bool_true_offset = 116;
 static constexpr dart::compiler::target::word
-    Thread_bootstrap_native_wrapper_entry_point_offset = 332;
+    Thread_bootstrap_native_wrapper_entry_point_offset = 336;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 144;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 768;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 776;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 760;
+    Thread_double_truncate_round_supported_offset = 764;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 232;
@@ -4707,14 +4808,14 @@
 static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
     236;
 static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
-    356;
+    360;
 static constexpr dart::compiler::target::word
-    Thread_double_negate_address_offset = 352;
+    Thread_double_negate_address_offset = 356;
 static constexpr dart::compiler::target::word Thread_end_offset = 52;
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    736;
+    740;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 260;
 static constexpr dart::compiler::target::word
@@ -4726,21 +4827,21 @@
 static constexpr dart::compiler::target::word
     Thread_fix_callers_target_code_offset = 132;
 static constexpr dart::compiler::target::word
-    Thread_float_absolute_address_offset = 368;
+    Thread_float_absolute_address_offset = 372;
 static constexpr dart::compiler::target::word
-    Thread_float_negate_address_offset = 364;
+    Thread_float_negate_address_offset = 368;
 static constexpr dart::compiler::target::word Thread_float_not_address_offset =
-    360;
+    364;
 static constexpr dart::compiler::target::word
-    Thread_float_zerow_address_offset = 372;
+    Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    724;
+    728;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 140;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    752;
+    756;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 40;
-static constexpr dart::compiler::target::word Thread_isolate_group_offset = 772;
+static constexpr dart::compiler::target::word Thread_isolate_group_offset = 780;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     64;
 static constexpr dart::compiler::target::word
@@ -4758,7 +4859,7 @@
 static constexpr dart::compiler::target::word
     Thread_switchable_call_miss_stub_offset = 216;
 static constexpr dart::compiler::target::word
-    Thread_no_scope_native_wrapper_entry_point_offset = 336;
+    Thread_no_scope_native_wrapper_entry_point_offset = 340;
 static constexpr dart::compiler::target::word
     Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 152;
 static constexpr dart::compiler::target::word
@@ -4781,16 +4882,16 @@
     Thread_range_error_shared_without_fpu_regs_stub_offset = 180;
 static constexpr dart::compiler::target::word Thread_object_null_offset = 112;
 static constexpr dart::compiler::target::word
-    Thread_predefined_symbols_address_offset = 344;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 728;
+    Thread_predefined_symbols_address_offset = 348;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 732;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 732;
+    Thread_saved_shadow_call_stack_offset = 736;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    740;
+    744;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    Thread_slow_type_test_entry_point_offset = 328;
+    Thread_slow_type_test_entry_point_offset = 332;
 static constexpr dart::compiler::target::word Thread_stack_limit_offset = 28;
 static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
     56;
@@ -4822,9 +4923,21 @@
 static constexpr dart::compiler::target::word Thread_write_barrier_mask_offset =
     32;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 36;
-static constexpr dart::compiler::target::word Thread_callback_code_offset = 744;
+static constexpr dart::compiler::target::word Thread_callback_code_offset = 748;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 748;
+    Thread_callback_stack_return_offset = 752;
+static constexpr dart::compiler::target::word
+    Thread_jump_to_frame_entry_point_offset = 328;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 768;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
+    0;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
+    4;
+static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset = 8;
+static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset =
+    12;
+static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset =
+    16;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 12;
 static constexpr dart::compiler::target::word Type_arguments_offset = 12;
@@ -5197,11 +5310,11 @@
 static constexpr dart::compiler::target::word String_length_offset = 8;
 static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
 static constexpr dart::compiler::target::word
-    Thread_AllocateArray_entry_point_offset = 728;
+    Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1560;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     1568;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    1576;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -5227,22 +5340,22 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1640;
+    1648;
 static constexpr dart::compiler::target::word
-    Thread_auto_scope_native_wrapper_entry_point_offset = 656;
+    Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
 static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
 static constexpr dart::compiler::target::word
-    Thread_bootstrap_native_wrapper_entry_point_offset = 640;
+    Thread_bootstrap_native_wrapper_entry_point_offset = 648;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1656;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1648;
+    Thread_double_truncate_round_supported_offset = 1656;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 440;
@@ -5251,14 +5364,14 @@
 static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
     448;
 static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
-    688;
+    696;
 static constexpr dart::compiler::target::word
-    Thread_double_negate_address_offset = 680;
+    Thread_double_negate_address_offset = 688;
 static constexpr dart::compiler::target::word Thread_end_offset = 104;
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1600;
+    1608;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -5270,22 +5383,22 @@
 static constexpr dart::compiler::target::word
     Thread_fix_callers_target_code_offset = 240;
 static constexpr dart::compiler::target::word
-    Thread_float_absolute_address_offset = 712;
+    Thread_float_absolute_address_offset = 720;
 static constexpr dart::compiler::target::word
-    Thread_float_negate_address_offset = 704;
+    Thread_float_negate_address_offset = 712;
 static constexpr dart::compiler::target::word Thread_float_not_address_offset =
-    696;
+    704;
 static constexpr dart::compiler::target::word
-    Thread_float_zerow_address_offset = 720;
+    Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1576;
+    1584;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1632;
+    1640;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -5303,7 +5416,7 @@
 static constexpr dart::compiler::target::word
     Thread_switchable_call_miss_stub_offset = 408;
 static constexpr dart::compiler::target::word
-    Thread_no_scope_native_wrapper_entry_point_offset = 648;
+    Thread_no_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word
     Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280;
 static constexpr dart::compiler::target::word
@@ -5326,16 +5439,16 @@
     Thread_range_error_shared_without_fpu_regs_stub_offset = 336;
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
-    Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584;
+    Thread_predefined_symbols_address_offset = 672;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1592;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1592;
+    Thread_saved_shadow_call_stack_offset = 1600;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1608;
+    1616;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
-    Thread_slow_type_test_entry_point_offset = 632;
+    Thread_slow_type_test_entry_point_offset = 640;
 static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
 static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
     112;
@@ -5368,9 +5481,22 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1616;
+    1624;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1624;
+    Thread_callback_stack_return_offset = 1632;
+static constexpr dart::compiler::target::word
+    Thread_jump_to_frame_entry_point_offset = 632;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
+    0;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
+    8;
+static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset =
+    16;
+static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset =
+    24;
+static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset =
+    32;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -5431,9 +5557,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488,
-        1496, 1504, 1512, 1520, -1,   -1,   -1,   -1,   1528, 1536, -1,
-        -1,   1544, 1552, 1560, -1,   -1,   -1,   -1,   -1,   -1};
+        1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496,
+        1504, 1512, 1520, 1528, -1,   -1,   -1,   -1,   1536, 1544, -1,
+        -1,   1552, 1560, 1568, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 24;
@@ -5747,11 +5873,11 @@
 static constexpr dart::compiler::target::word String_length_offset = 8;
 static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
 static constexpr dart::compiler::target::word
-    Thread_AllocateArray_entry_point_offset = 728;
+    Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1496;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     1504;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    1512;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -5777,22 +5903,22 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1576;
+    1584;
 static constexpr dart::compiler::target::word
-    Thread_auto_scope_native_wrapper_entry_point_offset = 656;
+    Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
 static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
 static constexpr dart::compiler::target::word
-    Thread_bootstrap_native_wrapper_entry_point_offset = 640;
+    Thread_bootstrap_native_wrapper_entry_point_offset = 648;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1592;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1616;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1584;
+    Thread_double_truncate_round_supported_offset = 1592;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 440;
@@ -5801,14 +5927,14 @@
 static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
     448;
 static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
-    688;
+    696;
 static constexpr dart::compiler::target::word
-    Thread_double_negate_address_offset = 680;
+    Thread_double_negate_address_offset = 688;
 static constexpr dart::compiler::target::word Thread_end_offset = 104;
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1536;
+    1544;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -5820,22 +5946,22 @@
 static constexpr dart::compiler::target::word
     Thread_fix_callers_target_code_offset = 240;
 static constexpr dart::compiler::target::word
-    Thread_float_absolute_address_offset = 712;
+    Thread_float_absolute_address_offset = 720;
 static constexpr dart::compiler::target::word
-    Thread_float_negate_address_offset = 704;
+    Thread_float_negate_address_offset = 712;
 static constexpr dart::compiler::target::word Thread_float_not_address_offset =
-    696;
+    704;
 static constexpr dart::compiler::target::word
-    Thread_float_zerow_address_offset = 720;
+    Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1512;
+    1520;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1568;
+    1576;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1600;
+    1624;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -5853,7 +5979,7 @@
 static constexpr dart::compiler::target::word
     Thread_switchable_call_miss_stub_offset = 408;
 static constexpr dart::compiler::target::word
-    Thread_no_scope_native_wrapper_entry_point_offset = 648;
+    Thread_no_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word
     Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280;
 static constexpr dart::compiler::target::word
@@ -5876,16 +6002,16 @@
     Thread_range_error_shared_without_fpu_regs_stub_offset = 336;
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
-    Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1520;
+    Thread_predefined_symbols_address_offset = 672;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1528;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1528;
+    Thread_saved_shadow_call_stack_offset = 1536;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1544;
+    1552;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
-    Thread_slow_type_test_entry_point_offset = 632;
+    Thread_slow_type_test_entry_point_offset = 640;
 static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
 static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
     112;
@@ -5918,9 +6044,22 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1560;
+    Thread_callback_stack_return_offset = 1568;
+static constexpr dart::compiler::target::word
+    Thread_jump_to_frame_entry_point_offset = 632;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1600;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
+    0;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
+    8;
+static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset =
+    16;
+static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset =
+    24;
+static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset =
+    32;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -5981,8 +6120,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1408, 1416, 1424, 1432, -1,   -1,   1440, 1448,
-        1456, 1464, 1472, -1,   1480, 1488, -1,   -1};
+        1416, 1424, 1432, 1440, -1,   -1,   1448, 1456,
+        1464, 1472, 1480, -1,   1488, 1496, -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 16;
@@ -6296,11 +6435,11 @@
 static constexpr dart::compiler::target::word String_length_offset = 8;
 static constexpr dart::compiler::target::word SubtypeTestCache_cache_offset = 8;
 static constexpr dart::compiler::target::word
-    Thread_AllocateArray_entry_point_offset = 728;
+    Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word Thread_active_exception_offset =
-    1560;
-static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
     1568;
+static constexpr dart::compiler::target::word Thread_active_stacktrace_offset =
+    1576;
 static constexpr dart::compiler::target::word
     Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -6326,22 +6465,22 @@
 static constexpr dart::compiler::target::word
     Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word Thread_api_top_scope_offset =
-    1640;
+    1648;
 static constexpr dart::compiler::target::word
-    Thread_auto_scope_native_wrapper_entry_point_offset = 656;
+    Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word Thread_bool_false_offset = 216;
 static constexpr dart::compiler::target::word Thread_bool_true_offset = 208;
 static constexpr dart::compiler::target::word
-    Thread_bootstrap_native_wrapper_entry_point_offset = 640;
+    Thread_bootstrap_native_wrapper_entry_point_offset = 648;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     Thread_call_to_runtime_stub_offset = 264;
-static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1656;
+static constexpr dart::compiler::target::word Thread_dart_stream_offset = 1680;
 static constexpr dart::compiler::target::word
     Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    Thread_double_truncate_round_supported_offset = 1648;
+    Thread_double_truncate_round_supported_offset = 1656;
 static constexpr dart::compiler::target::word Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word Thread_optimize_stub_offset = 440;
@@ -6350,14 +6489,14 @@
 static constexpr dart::compiler::target::word Thread_deoptimize_stub_offset =
     448;
 static constexpr dart::compiler::target::word Thread_double_abs_address_offset =
-    688;
+    696;
 static constexpr dart::compiler::target::word
-    Thread_double_negate_address_offset = 680;
+    Thread_double_negate_address_offset = 688;
 static constexpr dart::compiler::target::word Thread_end_offset = 104;
 static constexpr dart::compiler::target::word
     Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word Thread_execution_state_offset =
-    1600;
+    1608;
 static constexpr dart::compiler::target::word
     Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -6369,22 +6508,22 @@
 static constexpr dart::compiler::target::word
     Thread_fix_callers_target_code_offset = 240;
 static constexpr dart::compiler::target::word
-    Thread_float_absolute_address_offset = 712;
+    Thread_float_absolute_address_offset = 720;
 static constexpr dart::compiler::target::word
-    Thread_float_negate_address_offset = 704;
+    Thread_float_negate_address_offset = 712;
 static constexpr dart::compiler::target::word Thread_float_not_address_offset =
-    696;
+    704;
 static constexpr dart::compiler::target::word
-    Thread_float_zerow_address_offset = 720;
+    Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word Thread_global_object_pool_offset =
-    1576;
+    1584;
 static constexpr dart::compiler::target::word
     Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word Thread_exit_through_ffi_offset =
-    1632;
+    1640;
 static constexpr dart::compiler::target::word Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word Thread_isolate_group_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word Thread_field_table_values_offset =
     128;
 static constexpr dart::compiler::target::word
@@ -6402,7 +6541,7 @@
 static constexpr dart::compiler::target::word
     Thread_switchable_call_miss_stub_offset = 408;
 static constexpr dart::compiler::target::word
-    Thread_no_scope_native_wrapper_entry_point_offset = 648;
+    Thread_no_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word
     Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280;
 static constexpr dart::compiler::target::word
@@ -6425,16 +6564,16 @@
     Thread_range_error_shared_without_fpu_regs_stub_offset = 336;
 static constexpr dart::compiler::target::word Thread_object_null_offset = 200;
 static constexpr dart::compiler::target::word
-    Thread_predefined_symbols_address_offset = 664;
-static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1584;
+    Thread_predefined_symbols_address_offset = 672;
+static constexpr dart::compiler::target::word Thread_resume_pc_offset = 1592;
 static constexpr dart::compiler::target::word
-    Thread_saved_shadow_call_stack_offset = 1592;
+    Thread_saved_shadow_call_stack_offset = 1600;
 static constexpr dart::compiler::target::word Thread_safepoint_state_offset =
-    1608;
+    1616;
 static constexpr dart::compiler::target::word
     Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
-    Thread_slow_type_test_entry_point_offset = 632;
+    Thread_slow_type_test_entry_point_offset = 640;
 static constexpr dart::compiler::target::word Thread_stack_limit_offset = 56;
 static constexpr dart::compiler::target::word Thread_saved_stack_limit_offset =
     112;
@@ -6467,9 +6606,22 @@
     64;
 static constexpr dart::compiler::target::word Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word Thread_callback_code_offset =
-    1616;
+    1624;
 static constexpr dart::compiler::target::word
-    Thread_callback_stack_return_offset = 1624;
+    Thread_callback_stack_return_offset = 1632;
+static constexpr dart::compiler::target::word
+    Thread_jump_to_frame_entry_point_offset = 632;
+static constexpr dart::compiler::target::word Thread_tsan_utils_offset = 1664;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_function_offset =
+    0;
+static constexpr dart::compiler::target::word TsanUtils_setjmp_buffer_offset =
+    8;
+static constexpr dart::compiler::target::word TsanUtils_exception_pc_offset =
+    16;
+static constexpr dart::compiler::target::word TsanUtils_exception_sp_offset =
+    24;
+static constexpr dart::compiler::target::word TsanUtils_exception_fp_offset =
+    32;
 static constexpr dart::compiler::target::word TimelineStream_enabled_offset =
     16;
 static constexpr dart::compiler::target::word TwoByteString_data_offset = 16;
@@ -6530,9 +6682,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     Thread_write_barrier_wrappers_thread_offset[] = {
-        1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488,
-        1496, 1504, 1512, 1520, -1,   -1,   -1,   -1,   1528, 1536, -1,
-        -1,   1544, 1552, 1560, -1,   -1,   -1,   -1,   -1,   -1};
+        1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496,
+        1504, 1512, 1520, 1528, -1,   -1,   -1,   -1,   1536, 1544, -1,
+        -1,   1552, 1560, 1568, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AbstractType_InstanceSize = 24;
 static constexpr dart::compiler::target::word ApiError_InstanceSize = 16;
 static constexpr dart::compiler::target::word Array_header_size = 16;
@@ -6883,11 +7035,11 @@
 static constexpr dart::compiler::target::word
     AOT_SubtypeTestCache_cache_offset = 4;
 static constexpr dart::compiler::target::word
-    AOT_Thread_AllocateArray_entry_point_offset = 376;
+    AOT_Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 748;
+    AOT_Thread_active_exception_offset = 752;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 752;
+    AOT_Thread_active_stacktrace_offset = 756;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 128;
 static constexpr dart::compiler::target::word
@@ -6913,24 +7065,24 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 204;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    788;
+    792;
 static constexpr dart::compiler::target::word
-    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 340;
+    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
     120;
 static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 116;
 static constexpr dart::compiler::target::word
-    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 332;
+    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 336;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    800;
+    808;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 792;
+    AOT_Thread_double_truncate_round_supported_offset = 796;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -6940,14 +7092,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_deoptimize_stub_offset = 236;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_abs_address_offset = 356;
+    AOT_Thread_double_abs_address_offset = 360;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_negate_address_offset = 352;
+    AOT_Thread_double_negate_address_offset = 356;
 static constexpr dart::compiler::target::word AOT_Thread_end_offset = 52;
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 768;
+    AOT_Thread_execution_state_offset = 772;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 260;
 static constexpr dart::compiler::target::word
@@ -6959,22 +7111,22 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_fix_callers_target_code_offset = 132;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_absolute_address_offset = 368;
+    AOT_Thread_float_absolute_address_offset = 372;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_negate_address_offset = 364;
+    AOT_Thread_float_negate_address_offset = 368;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_not_address_offset = 360;
+    AOT_Thread_float_not_address_offset = 364;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_zerow_address_offset = 372;
+    AOT_Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 756;
+    AOT_Thread_global_object_pool_offset = 760;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 140;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 784;
+    AOT_Thread_exit_through_ffi_offset = 788;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    804;
+    812;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 64;
 static constexpr dart::compiler::target::word
@@ -6992,7 +7144,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_switchable_call_miss_stub_offset = 216;
 static constexpr dart::compiler::target::word
-    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 336;
+    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 340;
 static constexpr dart::compiler::target::word
     AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 152;
 static constexpr dart::compiler::target::word
@@ -7017,16 +7169,16 @@
 static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
     112;
 static constexpr dart::compiler::target::word
-    AOT_Thread_predefined_symbols_address_offset = 344;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 760;
+    AOT_Thread_predefined_symbols_address_offset = 348;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 764;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 764;
+    AOT_Thread_saved_shadow_call_stack_offset = 768;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 772;
+    AOT_Thread_safepoint_state_offset = 776;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_slow_type_test_entry_point_offset = 328;
+    AOT_Thread_slow_type_test_entry_point_offset = 332;
 static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
     28;
 static constexpr dart::compiler::target::word
@@ -7061,9 +7213,23 @@
     AOT_Thread_write_barrier_mask_offset = 32;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    776;
+    780;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 780;
+    AOT_Thread_callback_stack_return_offset = 784;
+static constexpr dart::compiler::target::word
+    AOT_Thread_jump_to_frame_entry_point_offset = 328;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+    800;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_function_offset = 0;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_buffer_offset = 4;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_pc_offset = 8;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_sp_offset = 12;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_fp_offset = 16;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -7136,7 +7302,7 @@
     4, 12, 8, 16};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        716, 720, 724, 728, 732, -1, 736, -1, 740, 744, -1, -1, -1, -1, -1, -1};
+        720, 724, 728, 732, 736, -1, 740, -1, 744, 748, -1, -1, -1, -1, -1, -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     12;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8;
@@ -7498,11 +7664,11 @@
 static constexpr dart::compiler::target::word
     AOT_SubtypeTestCache_cache_offset = 8;
 static constexpr dart::compiler::target::word
-    AOT_Thread_AllocateArray_entry_point_offset = 728;
+    AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1496;
+    AOT_Thread_active_exception_offset = 1504;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1504;
+    AOT_Thread_active_stacktrace_offset = 1512;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -7528,24 +7694,24 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1576;
+    1584;
 static constexpr dart::compiler::target::word
-    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
+    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
     216;
 static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
 static constexpr dart::compiler::target::word
-    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 640;
+    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1592;
+    1616;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1584;
+    AOT_Thread_double_truncate_round_supported_offset = 1592;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -7555,14 +7721,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_deoptimize_stub_offset = 448;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_abs_address_offset = 688;
+    AOT_Thread_double_abs_address_offset = 696;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_negate_address_offset = 680;
+    AOT_Thread_double_negate_address_offset = 688;
 static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1536;
+    AOT_Thread_execution_state_offset = 1544;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -7574,22 +7740,22 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_fix_callers_target_code_offset = 240;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_absolute_address_offset = 712;
+    AOT_Thread_float_absolute_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_negate_address_offset = 704;
+    AOT_Thread_float_negate_address_offset = 712;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_not_address_offset = 696;
+    AOT_Thread_float_not_address_offset = 704;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_zerow_address_offset = 720;
+    AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1512;
+    AOT_Thread_global_object_pool_offset = 1520;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1568;
+    AOT_Thread_exit_through_ffi_offset = 1576;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1600;
+    1624;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -7607,7 +7773,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_switchable_call_miss_stub_offset = 408;
 static constexpr dart::compiler::target::word
-    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 648;
+    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word
     AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280;
 static constexpr dart::compiler::target::word
@@ -7632,17 +7798,17 @@
 static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
     200;
 static constexpr dart::compiler::target::word
-    AOT_Thread_predefined_symbols_address_offset = 664;
+    AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1520;
+    1528;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1528;
+    AOT_Thread_saved_shadow_call_stack_offset = 1536;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1544;
+    AOT_Thread_safepoint_state_offset = 1552;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
-    AOT_Thread_slow_type_test_entry_point_offset = 632;
+    AOT_Thread_slow_type_test_entry_point_offset = 640;
 static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
     56;
 static constexpr dart::compiler::target::word
@@ -7677,9 +7843,23 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1560;
+    AOT_Thread_callback_stack_return_offset = 1568;
+static constexpr dart::compiler::target::word
+    AOT_Thread_jump_to_frame_entry_point_offset = 632;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+    1600;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_function_offset = 0;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_buffer_offset = 8;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_pc_offset = 16;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_sp_offset = 24;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_fp_offset = 32;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -7753,8 +7933,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1408, 1416, 1424, 1432, -1,   -1,   1440, 1448,
-        1456, 1464, 1472, -1,   1480, 1488, -1,   -1};
+        1416, 1424, 1432, 1440, -1,   -1,   1448, 1456,
+        1464, 1472, 1480, -1,   1488, 1496, -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -8119,11 +8299,11 @@
 static constexpr dart::compiler::target::word
     AOT_SubtypeTestCache_cache_offset = 8;
 static constexpr dart::compiler::target::word
-    AOT_Thread_AllocateArray_entry_point_offset = 728;
+    AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1560;
+    AOT_Thread_active_exception_offset = 1568;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1568;
+    AOT_Thread_active_stacktrace_offset = 1576;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -8149,24 +8329,24 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1640;
+    1648;
 static constexpr dart::compiler::target::word
-    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
+    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
     216;
 static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
 static constexpr dart::compiler::target::word
-    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 640;
+    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1656;
+    1680;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1648;
+    AOT_Thread_double_truncate_round_supported_offset = 1656;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -8176,14 +8356,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_deoptimize_stub_offset = 448;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_abs_address_offset = 688;
+    AOT_Thread_double_abs_address_offset = 696;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_negate_address_offset = 680;
+    AOT_Thread_double_negate_address_offset = 688;
 static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1600;
+    AOT_Thread_execution_state_offset = 1608;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -8195,22 +8375,22 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_fix_callers_target_code_offset = 240;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_absolute_address_offset = 712;
+    AOT_Thread_float_absolute_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_negate_address_offset = 704;
+    AOT_Thread_float_negate_address_offset = 712;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_not_address_offset = 696;
+    AOT_Thread_float_not_address_offset = 704;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_zerow_address_offset = 720;
+    AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1576;
+    AOT_Thread_global_object_pool_offset = 1584;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1632;
+    AOT_Thread_exit_through_ffi_offset = 1640;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -8228,7 +8408,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_switchable_call_miss_stub_offset = 408;
 static constexpr dart::compiler::target::word
-    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 648;
+    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word
     AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280;
 static constexpr dart::compiler::target::word
@@ -8253,17 +8433,17 @@
 static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
     200;
 static constexpr dart::compiler::target::word
-    AOT_Thread_predefined_symbols_address_offset = 664;
+    AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1584;
+    1592;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1592;
+    AOT_Thread_saved_shadow_call_stack_offset = 1600;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1608;
+    AOT_Thread_safepoint_state_offset = 1616;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
-    AOT_Thread_slow_type_test_entry_point_offset = 632;
+    AOT_Thread_slow_type_test_entry_point_offset = 640;
 static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
     56;
 static constexpr dart::compiler::target::word
@@ -8298,9 +8478,23 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1616;
+    1624;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1624;
+    AOT_Thread_callback_stack_return_offset = 1632;
+static constexpr dart::compiler::target::word
+    AOT_Thread_jump_to_frame_entry_point_offset = 632;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+    1664;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_function_offset = 0;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_buffer_offset = 8;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_pc_offset = 16;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_sp_offset = 24;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_fp_offset = 32;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -8374,9 +8568,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488,
-        1496, 1504, 1512, 1520, -1,   -1,   -1,   -1,   1528, 1536, -1,
-        -1,   1544, 1552, 1560, -1,   -1,   -1,   -1,   -1,   -1};
+        1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496,
+        1504, 1512, 1520, 1528, -1,   -1,   -1,   -1,   1536, 1544, -1,
+        -1,   1552, 1560, 1568, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -8737,11 +8931,11 @@
 static constexpr dart::compiler::target::word
     AOT_SubtypeTestCache_cache_offset = 8;
 static constexpr dart::compiler::target::word
-    AOT_Thread_AllocateArray_entry_point_offset = 728;
+    AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1496;
+    AOT_Thread_active_exception_offset = 1504;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1504;
+    AOT_Thread_active_stacktrace_offset = 1512;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -8767,24 +8961,24 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1576;
+    1584;
 static constexpr dart::compiler::target::word
-    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
+    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
     216;
 static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
 static constexpr dart::compiler::target::word
-    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 640;
+    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1592;
+    1616;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1584;
+    AOT_Thread_double_truncate_round_supported_offset = 1592;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -8794,14 +8988,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_deoptimize_stub_offset = 448;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_abs_address_offset = 688;
+    AOT_Thread_double_abs_address_offset = 696;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_negate_address_offset = 680;
+    AOT_Thread_double_negate_address_offset = 688;
 static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1536;
+    AOT_Thread_execution_state_offset = 1544;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -8813,22 +9007,22 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_fix_callers_target_code_offset = 240;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_absolute_address_offset = 712;
+    AOT_Thread_float_absolute_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_negate_address_offset = 704;
+    AOT_Thread_float_negate_address_offset = 712;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_not_address_offset = 696;
+    AOT_Thread_float_not_address_offset = 704;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_zerow_address_offset = 720;
+    AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1512;
+    AOT_Thread_global_object_pool_offset = 1520;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1568;
+    AOT_Thread_exit_through_ffi_offset = 1576;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1600;
+    1624;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -8846,7 +9040,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_switchable_call_miss_stub_offset = 408;
 static constexpr dart::compiler::target::word
-    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 648;
+    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word
     AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280;
 static constexpr dart::compiler::target::word
@@ -8871,17 +9065,17 @@
 static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
     200;
 static constexpr dart::compiler::target::word
-    AOT_Thread_predefined_symbols_address_offset = 664;
+    AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1520;
+    1528;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1528;
+    AOT_Thread_saved_shadow_call_stack_offset = 1536;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1544;
+    AOT_Thread_safepoint_state_offset = 1552;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
-    AOT_Thread_slow_type_test_entry_point_offset = 632;
+    AOT_Thread_slow_type_test_entry_point_offset = 640;
 static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
     56;
 static constexpr dart::compiler::target::word
@@ -8916,9 +9110,23 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1560;
+    AOT_Thread_callback_stack_return_offset = 1568;
+static constexpr dart::compiler::target::word
+    AOT_Thread_jump_to_frame_entry_point_offset = 632;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+    1600;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_function_offset = 0;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_buffer_offset = 8;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_pc_offset = 16;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_sp_offset = 24;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_fp_offset = 32;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -8992,8 +9200,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1408, 1416, 1424, 1432, -1,   -1,   1440, 1448,
-        1456, 1464, 1472, -1,   1480, 1488, -1,   -1};
+        1416, 1424, 1432, 1440, -1,   -1,   1448, 1456,
+        1464, 1472, 1480, -1,   1488, 1496, -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -9354,11 +9562,11 @@
 static constexpr dart::compiler::target::word
     AOT_SubtypeTestCache_cache_offset = 8;
 static constexpr dart::compiler::target::word
-    AOT_Thread_AllocateArray_entry_point_offset = 728;
+    AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1560;
+    AOT_Thread_active_exception_offset = 1568;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1568;
+    AOT_Thread_active_stacktrace_offset = 1576;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -9384,24 +9592,24 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1640;
+    1648;
 static constexpr dart::compiler::target::word
-    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
+    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
     216;
 static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
 static constexpr dart::compiler::target::word
-    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 640;
+    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1656;
+    1680;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1648;
+    AOT_Thread_double_truncate_round_supported_offset = 1656;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -9411,14 +9619,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_deoptimize_stub_offset = 448;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_abs_address_offset = 688;
+    AOT_Thread_double_abs_address_offset = 696;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_negate_address_offset = 680;
+    AOT_Thread_double_negate_address_offset = 688;
 static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1600;
+    AOT_Thread_execution_state_offset = 1608;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -9430,22 +9638,22 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_fix_callers_target_code_offset = 240;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_absolute_address_offset = 712;
+    AOT_Thread_float_absolute_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_negate_address_offset = 704;
+    AOT_Thread_float_negate_address_offset = 712;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_not_address_offset = 696;
+    AOT_Thread_float_not_address_offset = 704;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_zerow_address_offset = 720;
+    AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1576;
+    AOT_Thread_global_object_pool_offset = 1584;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1632;
+    AOT_Thread_exit_through_ffi_offset = 1640;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -9463,7 +9671,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_switchable_call_miss_stub_offset = 408;
 static constexpr dart::compiler::target::word
-    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 648;
+    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word
     AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280;
 static constexpr dart::compiler::target::word
@@ -9488,17 +9696,17 @@
 static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
     200;
 static constexpr dart::compiler::target::word
-    AOT_Thread_predefined_symbols_address_offset = 664;
+    AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1584;
+    1592;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1592;
+    AOT_Thread_saved_shadow_call_stack_offset = 1600;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1608;
+    AOT_Thread_safepoint_state_offset = 1616;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
-    AOT_Thread_slow_type_test_entry_point_offset = 632;
+    AOT_Thread_slow_type_test_entry_point_offset = 640;
 static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
     56;
 static constexpr dart::compiler::target::word
@@ -9533,9 +9741,23 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1616;
+    1624;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1624;
+    AOT_Thread_callback_stack_return_offset = 1632;
+static constexpr dart::compiler::target::word
+    AOT_Thread_jump_to_frame_entry_point_offset = 632;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+    1664;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_function_offset = 0;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_buffer_offset = 8;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_pc_offset = 16;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_sp_offset = 24;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_fp_offset = 32;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -9609,9 +9831,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488,
-        1496, 1504, 1512, 1520, -1,   -1,   -1,   -1,   1528, 1536, -1,
-        -1,   1544, 1552, 1560, -1,   -1,   -1,   -1,   -1,   -1};
+        1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496,
+        1504, 1512, 1520, 1528, -1,   -1,   -1,   -1,   1536, 1544, -1,
+        -1,   1552, 1560, 1568, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -9967,11 +10189,11 @@
 static constexpr dart::compiler::target::word
     AOT_SubtypeTestCache_cache_offset = 4;
 static constexpr dart::compiler::target::word
-    AOT_Thread_AllocateArray_entry_point_offset = 376;
+    AOT_Thread_AllocateArray_entry_point_offset = 380;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 748;
+    AOT_Thread_active_exception_offset = 752;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 752;
+    AOT_Thread_active_stacktrace_offset = 756;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 128;
 static constexpr dart::compiler::target::word
@@ -9997,24 +10219,24 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 204;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    788;
+    792;
 static constexpr dart::compiler::target::word
-    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 340;
+    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 344;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
     120;
 static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 116;
 static constexpr dart::compiler::target::word
-    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 332;
+    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 336;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_entry_point_offset = 276;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 144;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    800;
+    808;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 44;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 792;
+    AOT_Thread_double_truncate_round_supported_offset = 796;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     316;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -10024,14 +10246,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_deoptimize_stub_offset = 236;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_abs_address_offset = 356;
+    AOT_Thread_double_abs_address_offset = 360;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_negate_address_offset = 352;
+    AOT_Thread_double_negate_address_offset = 356;
 static constexpr dart::compiler::target::word AOT_Thread_end_offset = 52;
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 768;
+    AOT_Thread_execution_state_offset = 772;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 260;
 static constexpr dart::compiler::target::word
@@ -10043,22 +10265,22 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_fix_callers_target_code_offset = 132;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_absolute_address_offset = 368;
+    AOT_Thread_float_absolute_address_offset = 372;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_negate_address_offset = 364;
+    AOT_Thread_float_negate_address_offset = 368;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_not_address_offset = 360;
+    AOT_Thread_float_not_address_offset = 364;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_zerow_address_offset = 372;
+    AOT_Thread_float_zerow_address_offset = 376;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 756;
+    AOT_Thread_global_object_pool_offset = 760;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 140;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 784;
+    AOT_Thread_exit_through_ffi_offset = 788;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 40;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    804;
+    812;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 64;
 static constexpr dart::compiler::target::word
@@ -10076,7 +10298,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_switchable_call_miss_stub_offset = 216;
 static constexpr dart::compiler::target::word
-    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 336;
+    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 340;
 static constexpr dart::compiler::target::word
     AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 152;
 static constexpr dart::compiler::target::word
@@ -10101,16 +10323,16 @@
 static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
     112;
 static constexpr dart::compiler::target::word
-    AOT_Thread_predefined_symbols_address_offset = 344;
-static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 760;
+    AOT_Thread_predefined_symbols_address_offset = 348;
+static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset = 764;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 764;
+    AOT_Thread_saved_shadow_call_stack_offset = 768;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 772;
+    AOT_Thread_safepoint_state_offset = 776;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 248;
 static constexpr dart::compiler::target::word
-    AOT_Thread_slow_type_test_entry_point_offset = 328;
+    AOT_Thread_slow_type_test_entry_point_offset = 332;
 static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
     28;
 static constexpr dart::compiler::target::word
@@ -10145,9 +10367,23 @@
     AOT_Thread_write_barrier_mask_offset = 32;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 36;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    776;
+    780;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 780;
+    AOT_Thread_callback_stack_return_offset = 784;
+static constexpr dart::compiler::target::word
+    AOT_Thread_jump_to_frame_entry_point_offset = 328;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+    800;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_function_offset = 0;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_buffer_offset = 4;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_pc_offset = 8;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_sp_offset = 12;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_fp_offset = 16;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 8;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -10220,7 +10456,7 @@
     4, 12, 8, 16};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        716, 720, 724, 728, 732, -1, 736, -1, 740, 744, -1, -1, -1, -1, -1, -1};
+        720, 724, 728, 732, 736, -1, 740, -1, 744, 748, -1, -1, -1, -1, -1, -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     12;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 8;
@@ -10575,11 +10811,11 @@
 static constexpr dart::compiler::target::word
     AOT_SubtypeTestCache_cache_offset = 8;
 static constexpr dart::compiler::target::word
-    AOT_Thread_AllocateArray_entry_point_offset = 728;
+    AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1496;
+    AOT_Thread_active_exception_offset = 1504;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1504;
+    AOT_Thread_active_stacktrace_offset = 1512;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -10605,24 +10841,24 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1576;
+    1584;
 static constexpr dart::compiler::target::word
-    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
+    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
     216;
 static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
 static constexpr dart::compiler::target::word
-    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 640;
+    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1592;
+    1616;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1584;
+    AOT_Thread_double_truncate_round_supported_offset = 1592;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -10632,14 +10868,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_deoptimize_stub_offset = 448;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_abs_address_offset = 688;
+    AOT_Thread_double_abs_address_offset = 696;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_negate_address_offset = 680;
+    AOT_Thread_double_negate_address_offset = 688;
 static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1536;
+    AOT_Thread_execution_state_offset = 1544;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -10651,22 +10887,22 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_fix_callers_target_code_offset = 240;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_absolute_address_offset = 712;
+    AOT_Thread_float_absolute_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_negate_address_offset = 704;
+    AOT_Thread_float_negate_address_offset = 712;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_not_address_offset = 696;
+    AOT_Thread_float_not_address_offset = 704;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_zerow_address_offset = 720;
+    AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1512;
+    AOT_Thread_global_object_pool_offset = 1520;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1568;
+    AOT_Thread_exit_through_ffi_offset = 1576;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1600;
+    1624;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -10684,7 +10920,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_switchable_call_miss_stub_offset = 408;
 static constexpr dart::compiler::target::word
-    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 648;
+    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word
     AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280;
 static constexpr dart::compiler::target::word
@@ -10709,17 +10945,17 @@
 static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
     200;
 static constexpr dart::compiler::target::word
-    AOT_Thread_predefined_symbols_address_offset = 664;
+    AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1520;
+    1528;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1528;
+    AOT_Thread_saved_shadow_call_stack_offset = 1536;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1544;
+    AOT_Thread_safepoint_state_offset = 1552;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
-    AOT_Thread_slow_type_test_entry_point_offset = 632;
+    AOT_Thread_slow_type_test_entry_point_offset = 640;
 static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
     56;
 static constexpr dart::compiler::target::word
@@ -10754,9 +10990,23 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1560;
+    AOT_Thread_callback_stack_return_offset = 1568;
+static constexpr dart::compiler::target::word
+    AOT_Thread_jump_to_frame_entry_point_offset = 632;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+    1600;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_function_offset = 0;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_buffer_offset = 8;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_pc_offset = 16;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_sp_offset = 24;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_fp_offset = 32;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -10830,8 +11080,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1408, 1416, 1424, 1432, -1,   -1,   1440, 1448,
-        1456, 1464, 1472, -1,   1480, 1488, -1,   -1};
+        1416, 1424, 1432, 1440, -1,   -1,   1448, 1456,
+        1464, 1472, 1480, -1,   1488, 1496, -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -11189,11 +11439,11 @@
 static constexpr dart::compiler::target::word
     AOT_SubtypeTestCache_cache_offset = 8;
 static constexpr dart::compiler::target::word
-    AOT_Thread_AllocateArray_entry_point_offset = 728;
+    AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1560;
+    AOT_Thread_active_exception_offset = 1568;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1568;
+    AOT_Thread_active_stacktrace_offset = 1576;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -11219,24 +11469,24 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1640;
+    1648;
 static constexpr dart::compiler::target::word
-    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
+    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
     216;
 static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
 static constexpr dart::compiler::target::word
-    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 640;
+    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1656;
+    1680;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1648;
+    AOT_Thread_double_truncate_round_supported_offset = 1656;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -11246,14 +11496,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_deoptimize_stub_offset = 448;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_abs_address_offset = 688;
+    AOT_Thread_double_abs_address_offset = 696;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_negate_address_offset = 680;
+    AOT_Thread_double_negate_address_offset = 688;
 static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1600;
+    AOT_Thread_execution_state_offset = 1608;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -11265,22 +11515,22 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_fix_callers_target_code_offset = 240;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_absolute_address_offset = 712;
+    AOT_Thread_float_absolute_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_negate_address_offset = 704;
+    AOT_Thread_float_negate_address_offset = 712;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_not_address_offset = 696;
+    AOT_Thread_float_not_address_offset = 704;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_zerow_address_offset = 720;
+    AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1576;
+    AOT_Thread_global_object_pool_offset = 1584;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1632;
+    AOT_Thread_exit_through_ffi_offset = 1640;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -11298,7 +11548,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_switchable_call_miss_stub_offset = 408;
 static constexpr dart::compiler::target::word
-    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 648;
+    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word
     AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280;
 static constexpr dart::compiler::target::word
@@ -11323,17 +11573,17 @@
 static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
     200;
 static constexpr dart::compiler::target::word
-    AOT_Thread_predefined_symbols_address_offset = 664;
+    AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1584;
+    1592;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1592;
+    AOT_Thread_saved_shadow_call_stack_offset = 1600;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1608;
+    AOT_Thread_safepoint_state_offset = 1616;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
-    AOT_Thread_slow_type_test_entry_point_offset = 632;
+    AOT_Thread_slow_type_test_entry_point_offset = 640;
 static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
     56;
 static constexpr dart::compiler::target::word
@@ -11368,9 +11618,23 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1616;
+    1624;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1624;
+    AOT_Thread_callback_stack_return_offset = 1632;
+static constexpr dart::compiler::target::word
+    AOT_Thread_jump_to_frame_entry_point_offset = 632;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+    1664;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_function_offset = 0;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_buffer_offset = 8;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_pc_offset = 16;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_sp_offset = 24;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_fp_offset = 32;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -11444,9 +11708,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488,
-        1496, 1504, 1512, 1520, -1,   -1,   -1,   -1,   1528, 1536, -1,
-        -1,   1544, 1552, 1560, -1,   -1,   -1,   -1,   -1,   -1};
+        1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496,
+        1504, 1512, 1520, 1528, -1,   -1,   -1,   -1,   1536, 1544, -1,
+        -1,   1552, 1560, 1568, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -11800,11 +12064,11 @@
 static constexpr dart::compiler::target::word
     AOT_SubtypeTestCache_cache_offset = 8;
 static constexpr dart::compiler::target::word
-    AOT_Thread_AllocateArray_entry_point_offset = 728;
+    AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1496;
+    AOT_Thread_active_exception_offset = 1504;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1504;
+    AOT_Thread_active_stacktrace_offset = 1512;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -11830,24 +12094,24 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1576;
+    1584;
 static constexpr dart::compiler::target::word
-    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
+    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
     216;
 static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
 static constexpr dart::compiler::target::word
-    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 640;
+    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1592;
+    1616;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1584;
+    AOT_Thread_double_truncate_round_supported_offset = 1592;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -11857,14 +12121,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_deoptimize_stub_offset = 448;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_abs_address_offset = 688;
+    AOT_Thread_double_abs_address_offset = 696;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_negate_address_offset = 680;
+    AOT_Thread_double_negate_address_offset = 688;
 static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1536;
+    AOT_Thread_execution_state_offset = 1544;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -11876,22 +12140,22 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_fix_callers_target_code_offset = 240;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_absolute_address_offset = 712;
+    AOT_Thread_float_absolute_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_negate_address_offset = 704;
+    AOT_Thread_float_negate_address_offset = 712;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_not_address_offset = 696;
+    AOT_Thread_float_not_address_offset = 704;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_zerow_address_offset = 720;
+    AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1512;
+    AOT_Thread_global_object_pool_offset = 1520;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1568;
+    AOT_Thread_exit_through_ffi_offset = 1576;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1600;
+    1624;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -11909,7 +12173,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_switchable_call_miss_stub_offset = 408;
 static constexpr dart::compiler::target::word
-    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 648;
+    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word
     AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280;
 static constexpr dart::compiler::target::word
@@ -11934,17 +12198,17 @@
 static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
     200;
 static constexpr dart::compiler::target::word
-    AOT_Thread_predefined_symbols_address_offset = 664;
+    AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1520;
+    1528;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1528;
+    AOT_Thread_saved_shadow_call_stack_offset = 1536;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1544;
+    AOT_Thread_safepoint_state_offset = 1552;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
-    AOT_Thread_slow_type_test_entry_point_offset = 632;
+    AOT_Thread_slow_type_test_entry_point_offset = 640;
 static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
     56;
 static constexpr dart::compiler::target::word
@@ -11979,9 +12243,23 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1552;
+    1560;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1560;
+    AOT_Thread_callback_stack_return_offset = 1568;
+static constexpr dart::compiler::target::word
+    AOT_Thread_jump_to_frame_entry_point_offset = 632;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+    1600;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_function_offset = 0;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_buffer_offset = 8;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_pc_offset = 16;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_sp_offset = 24;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_fp_offset = 32;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -12055,8 +12333,8 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1408, 1416, 1424, 1432, -1,   -1,   1440, 1448,
-        1456, 1464, 1472, -1,   1480, 1488, -1,   -1};
+        1416, 1424, 1432, 1440, -1,   -1,   1448, 1456,
+        1464, 1472, 1480, -1,   1488, 1496, -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
@@ -12410,11 +12688,11 @@
 static constexpr dart::compiler::target::word
     AOT_SubtypeTestCache_cache_offset = 8;
 static constexpr dart::compiler::target::word
-    AOT_Thread_AllocateArray_entry_point_offset = 728;
+    AOT_Thread_AllocateArray_entry_point_offset = 736;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_exception_offset = 1560;
+    AOT_Thread_active_exception_offset = 1568;
 static constexpr dart::compiler::target::word
-    AOT_Thread_active_stacktrace_offset = 1568;
+    AOT_Thread_active_stacktrace_offset = 1576;
 static constexpr dart::compiler::target::word
     AOT_Thread_array_write_barrier_code_offset = 232;
 static constexpr dart::compiler::target::word
@@ -12440,24 +12718,24 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_allocate_object_slow_stub_offset = 384;
 static constexpr dart::compiler::target::word AOT_Thread_api_top_scope_offset =
-    1640;
+    1648;
 static constexpr dart::compiler::target::word
-    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 656;
+    AOT_Thread_auto_scope_native_wrapper_entry_point_offset = 664;
 static constexpr dart::compiler::target::word AOT_Thread_bool_false_offset =
     216;
 static constexpr dart::compiler::target::word AOT_Thread_bool_true_offset = 208;
 static constexpr dart::compiler::target::word
-    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 640;
+    AOT_Thread_bootstrap_native_wrapper_entry_point_offset = 648;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_entry_point_offset = 528;
 static constexpr dart::compiler::target::word
     AOT_Thread_call_to_runtime_stub_offset = 264;
 static constexpr dart::compiler::target::word AOT_Thread_dart_stream_offset =
-    1656;
+    1680;
 static constexpr dart::compiler::target::word
     AOT_Thread_dispatch_table_array_offset = 88;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_truncate_round_supported_offset = 1648;
+    AOT_Thread_double_truncate_round_supported_offset = 1656;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_entry_offset =
     608;
 static constexpr dart::compiler::target::word AOT_Thread_optimize_stub_offset =
@@ -12467,14 +12745,14 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_deoptimize_stub_offset = 448;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_abs_address_offset = 688;
+    AOT_Thread_double_abs_address_offset = 696;
 static constexpr dart::compiler::target::word
-    AOT_Thread_double_negate_address_offset = 680;
+    AOT_Thread_double_negate_address_offset = 688;
 static constexpr dart::compiler::target::word AOT_Thread_end_offset = 104;
 static constexpr dart::compiler::target::word
     AOT_Thread_enter_safepoint_stub_offset = 488;
 static constexpr dart::compiler::target::word
-    AOT_Thread_execution_state_offset = 1600;
+    AOT_Thread_execution_state_offset = 1608;
 static constexpr dart::compiler::target::word
     AOT_Thread_exit_safepoint_stub_offset = 496;
 static constexpr dart::compiler::target::word
@@ -12486,22 +12764,22 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_fix_callers_target_code_offset = 240;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_absolute_address_offset = 712;
+    AOT_Thread_float_absolute_address_offset = 720;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_negate_address_offset = 704;
+    AOT_Thread_float_negate_address_offset = 712;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_not_address_offset = 696;
+    AOT_Thread_float_not_address_offset = 704;
 static constexpr dart::compiler::target::word
-    AOT_Thread_float_zerow_address_offset = 720;
+    AOT_Thread_float_zerow_address_offset = 728;
 static constexpr dart::compiler::target::word
-    AOT_Thread_global_object_pool_offset = 1576;
+    AOT_Thread_global_object_pool_offset = 1584;
 static constexpr dart::compiler::target::word
     AOT_Thread_invoke_dart_code_stub_offset = 256;
 static constexpr dart::compiler::target::word
-    AOT_Thread_exit_through_ffi_offset = 1632;
+    AOT_Thread_exit_through_ffi_offset = 1640;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_offset = 80;
 static constexpr dart::compiler::target::word AOT_Thread_isolate_group_offset =
-    1664;
+    1688;
 static constexpr dart::compiler::target::word
     AOT_Thread_field_table_values_offset = 128;
 static constexpr dart::compiler::target::word
@@ -12519,7 +12797,7 @@
 static constexpr dart::compiler::target::word
     AOT_Thread_switchable_call_miss_stub_offset = 408;
 static constexpr dart::compiler::target::word
-    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 648;
+    AOT_Thread_no_scope_native_wrapper_entry_point_offset = 656;
 static constexpr dart::compiler::target::word
     AOT_Thread_late_initialization_error_shared_with_fpu_regs_stub_offset = 280;
 static constexpr dart::compiler::target::word
@@ -12544,17 +12822,17 @@
 static constexpr dart::compiler::target::word AOT_Thread_object_null_offset =
     200;
 static constexpr dart::compiler::target::word
-    AOT_Thread_predefined_symbols_address_offset = 664;
+    AOT_Thread_predefined_symbols_address_offset = 672;
 static constexpr dart::compiler::target::word AOT_Thread_resume_pc_offset =
-    1584;
+    1592;
 static constexpr dart::compiler::target::word
-    AOT_Thread_saved_shadow_call_stack_offset = 1592;
+    AOT_Thread_saved_shadow_call_stack_offset = 1600;
 static constexpr dart::compiler::target::word
-    AOT_Thread_safepoint_state_offset = 1608;
+    AOT_Thread_safepoint_state_offset = 1616;
 static constexpr dart::compiler::target::word
     AOT_Thread_slow_type_test_stub_offset = 472;
 static constexpr dart::compiler::target::word
-    AOT_Thread_slow_type_test_entry_point_offset = 632;
+    AOT_Thread_slow_type_test_entry_point_offset = 640;
 static constexpr dart::compiler::target::word AOT_Thread_stack_limit_offset =
     56;
 static constexpr dart::compiler::target::word
@@ -12589,9 +12867,23 @@
     AOT_Thread_write_barrier_mask_offset = 64;
 static constexpr dart::compiler::target::word AOT_Thread_heap_base_offset = 72;
 static constexpr dart::compiler::target::word AOT_Thread_callback_code_offset =
-    1616;
+    1624;
 static constexpr dart::compiler::target::word
-    AOT_Thread_callback_stack_return_offset = 1624;
+    AOT_Thread_callback_stack_return_offset = 1632;
+static constexpr dart::compiler::target::word
+    AOT_Thread_jump_to_frame_entry_point_offset = 632;
+static constexpr dart::compiler::target::word AOT_Thread_tsan_utils_offset =
+    1664;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_function_offset = 0;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_setjmp_buffer_offset = 8;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_pc_offset = 16;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_sp_offset = 24;
+static constexpr dart::compiler::target::word
+    AOT_TsanUtils_exception_fp_offset = 32;
 static constexpr dart::compiler::target::word
     AOT_TimelineStream_enabled_offset = 16;
 static constexpr dart::compiler::target::word AOT_TwoByteString_data_offset =
@@ -12665,9 +12957,9 @@
     8, 24, 16, 32};
 static constexpr dart::compiler::target::word
     AOT_Thread_write_barrier_wrappers_thread_offset[] = {
-        1408, 1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488,
-        1496, 1504, 1512, 1520, -1,   -1,   -1,   -1,   1528, 1536, -1,
-        -1,   1544, 1552, 1560, -1,   -1,   -1,   -1,   -1,   -1};
+        1416, 1424, 1432, 1440, 1448, 1456, 1464, 1472, 1480, 1488, 1496,
+        1504, 1512, 1520, 1528, -1,   -1,   -1,   -1,   1536, 1544, -1,
+        -1,   1552, 1560, 1568, -1,   -1,   -1,   -1,   -1,   -1};
 static constexpr dart::compiler::target::word AOT_AbstractType_InstanceSize =
     24;
 static constexpr dart::compiler::target::word AOT_ApiError_InstanceSize = 16;
diff --git a/runtime/vm/compiler/runtime_offsets_list.h b/runtime/vm/compiler/runtime_offsets_list.h
index 0d22eca..d0264eb 100644
--- a/runtime/vm/compiler/runtime_offsets_list.h
+++ b/runtime/vm/compiler/runtime_offsets_list.h
@@ -286,6 +286,13 @@
   FIELD(Thread, heap_base_offset)                                              \
   FIELD(Thread, callback_code_offset)                                          \
   FIELD(Thread, callback_stack_return_offset)                                  \
+  FIELD(Thread, jump_to_frame_entry_point_offset)                              \
+  FIELD(Thread, tsan_utils_offset)                                             \
+  FIELD(TsanUtils, setjmp_function_offset)                                     \
+  FIELD(TsanUtils, setjmp_buffer_offset)                                       \
+  FIELD(TsanUtils, exception_pc_offset)                                        \
+  FIELD(TsanUtils, exception_sp_offset)                                        \
+  FIELD(TsanUtils, exception_fp_offset)                                        \
   FIELD(TimelineStream, enabled_offset)                                        \
   FIELD(TwoByteString, data_offset)                                            \
   FIELD(Type, arguments_offset)                                                \
diff --git a/runtime/vm/compiler/stub_code_compiler_x64.cc b/runtime/vm/compiler/stub_code_compiler_x64.cc
index 07f9c00..ae87dca 100644
--- a/runtime/vm/compiler/stub_code_compiler_x64.cc
+++ b/runtime/vm/compiler/stub_code_compiler_x64.cc
@@ -2,6 +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.
 
+#include <setjmp.h>
+
 #include "vm/compiler/runtime_api.h"
 #include "vm/globals.h"
 
@@ -58,6 +60,102 @@
   __ Bind(&done);
 }
 
+// In TSAN mode the runtime will throw an exception using an intermediary
+// longjmp() call to unwind the C frames in a way that TSAN can understand.
+//
+// This wrapper will setup a [jmp_buf] on the stack and initialize it to be a
+// target for a possible longjmp(). In the exceptional case we'll forward
+// control of execution to the usual JumpToFrame stub.
+//
+// In non-TSAN mode this will do nothing and the runtime will call the
+// JumpToFrame stub directly.
+//
+// The callback [fun] may be invoked with a modified [RSP] due to allocating
+// a [jmp_buf] allocating structure on the stack (as well as the saved old
+// [Thread::tsan_utils_->setjmp_buffer_]).
+static void WithExceptionCatchingTrampoline(Assembler* assembler,
+                                            std::function<void()> fun) {
+#if defined(USING_THREAD_SANITIZER)
+  const Register kTsanUtilsReg = RAX;
+
+  // Reserve space for arguments and align frame before entering C++ world.
+  const intptr_t kJumpBufferSize = sizeof(jmp_buf);
+  // Save & Restore the volatile CPU registers across the setjmp() call.
+  const RegisterSet volatile_registers(
+      CallingConventions::kVolatileCpuRegisters & ~(1 << RAX),
+      /*fpu_registers=*/0);
+
+  const Register kSavedRspReg = R12;
+  COMPILE_ASSERT(IsCalleeSavedRegister(kSavedRspReg));
+  // We rely on THR being preserved across the setjmp() call.
+  COMPILE_ASSERT(IsCalleeSavedRegister(THR));
+
+  Label do_native_call;
+
+  // Save old jmp_buf.
+  __ movq(kTsanUtilsReg, Address(THR, target::Thread::tsan_utils_offset()));
+  __ pushq(Address(kTsanUtilsReg, target::TsanUtils::setjmp_buffer_offset()));
+
+  // Allocate jmp_buf struct on stack & remember pointer to it on the
+  // [Thread::tsan_utils_->setjmp_buffer] (which exceptions.cc will longjmp()
+  // to)
+  __ AddImmediate(RSP, Immediate(-kJumpBufferSize));
+  __ movq(Address(kTsanUtilsReg, target::TsanUtils::setjmp_buffer_offset()),
+          RSP);
+
+  // Call setjmp() with a pointer to the allocated jmp_buf struct.
+  __ MoveRegister(CallingConventions::kArg1Reg, RSP);
+  __ PushRegisters(volatile_registers);
+  if (OS::ActivationFrameAlignment() > 1) {
+    __ MoveRegister(kSavedRspReg, RSP);
+    __ andq(RSP, Immediate(~(OS::ActivationFrameAlignment() - 1)));
+  }
+  __ movq(kTsanUtilsReg, Address(THR, target::Thread::tsan_utils_offset()));
+  __ CallCFunction(
+      Address(kTsanUtilsReg, target::TsanUtils::setjmp_function_offset()),
+      /*restore_rsp=*/true);
+  if (OS::ActivationFrameAlignment() > 1) {
+    __ MoveRegister(RSP, kSavedRspReg);
+  }
+  __ PopRegisters(volatile_registers);
+
+  // We are the target of a longjmp() iff setjmp() returns non-0.
+  __ CompareImmediate(RAX, 0);
+  __ BranchIf(EQUAL, &do_native_call);
+
+  // We are the target of a longjmp: Cleanup the stack and tail-call the
+  // JumpToFrame stub which will take care of unwinding the stack and hand
+  // execution to the catch entry.
+  __ AddImmediate(RSP, Immediate(kJumpBufferSize));
+  __ movq(kTsanUtilsReg, Address(THR, target::Thread::tsan_utils_offset()));
+  __ popq(Address(kTsanUtilsReg, target::TsanUtils::setjmp_buffer_offset()));
+
+  __ movq(CallingConventions::kArg1Reg,
+          Address(kTsanUtilsReg, target::TsanUtils::exception_pc_offset()));
+  __ movq(CallingConventions::kArg2Reg,
+          Address(kTsanUtilsReg, target::TsanUtils::exception_sp_offset()));
+  __ movq(CallingConventions::kArg3Reg,
+          Address(kTsanUtilsReg, target::TsanUtils::exception_fp_offset()));
+  __ MoveRegister(CallingConventions::kArg4Reg, THR);
+  __ jmp(Address(THR, target::Thread::jump_to_frame_entry_point_offset()));
+
+  // We leave the created [jump_buf] structure on the stack as well as the
+  // pushed old [Thread::tsan_utils_->setjmp_buffer_].
+  __ Bind(&do_native_call);
+  __ MoveRegister(kSavedRspReg, RSP);
+#endif  // defined(USING_THREAD_SANITIZER)
+
+  fun();
+
+#if defined(USING_THREAD_SANITIZER)
+  __ MoveRegister(RSP, kSavedRspReg);
+  __ AddImmediate(RSP, Immediate(kJumpBufferSize));
+  const Register kTsanUtilsReg2 = kSavedRspReg;
+  __ movq(kTsanUtilsReg2, Address(THR, target::Thread::tsan_utils_offset()));
+  __ popq(Address(kTsanUtilsReg2, target::TsanUtils::setjmp_buffer_offset()));
+#endif  // defined(USING_THREAD_SANITIZER)
+}
+
 // Input parameters:
 //   RSP : points to return address.
 //   RSP + 8 : address of last argument in argument array.
@@ -99,51 +197,54 @@
   // Mark that the thread is executing VM code.
   __ movq(Assembler::VMTagAddress(), RBX);
 
-  // Reserve space for arguments and align frame before entering C++ world.
-  __ subq(RSP, Immediate(target::NativeArguments::StructSize()));
-  if (OS::ActivationFrameAlignment() > 1) {
-    __ andq(RSP, Immediate(~(OS::ActivationFrameAlignment() - 1)));
-  }
+  WithExceptionCatchingTrampoline(assembler, [&]() {
+    // Reserve space for arguments and align frame before entering C++ world.
+    __ subq(RSP, Immediate(target::NativeArguments::StructSize()));
+    if (OS::ActivationFrameAlignment() > 1) {
+      __ andq(RSP, Immediate(~(OS::ActivationFrameAlignment() - 1)));
+    }
 
-  // Pass target::NativeArguments structure by value and call runtime.
-  __ movq(Address(RSP, thread_offset), THR);  // Set thread in NativeArgs.
-  // There are no runtime calls to closures, so we do not need to set the tag
-  // bits kClosureFunctionBit and kInstanceFunctionBit in argc_tag_.
-  __ movq(Address(RSP, argc_tag_offset),
-          R10);  // Set argc in target::NativeArguments.
-  // Compute argv.
-  __ leaq(RAX,
-          Address(RBP, R10, TIMES_8,
-                  target::frame_layout.param_end_from_fp * target::kWordSize));
-  __ movq(Address(RSP, argv_offset),
-          RAX);  // Set argv in target::NativeArguments.
-  __ addq(RAX,
-          Immediate(1 * target::kWordSize));  // Retval is next to 1st argument.
-  __ movq(Address(RSP, retval_offset),
-          RAX);  // Set retval in target::NativeArguments.
+    // Pass target::NativeArguments structure by value and call runtime.
+    __ movq(Address(RSP, thread_offset), THR);  // Set thread in NativeArgs.
+    // There are no runtime calls to closures, so we do not need to set the tag
+    // bits kClosureFunctionBit and kInstanceFunctionBit in argc_tag_.
+    __ movq(Address(RSP, argc_tag_offset),
+            R10);  // Set argc in target::NativeArguments.
+    // Compute argv.
+    __ leaq(RAX, Address(RBP, R10, TIMES_8,
+                         target::frame_layout.param_end_from_fp *
+                             target::kWordSize));
+    __ movq(Address(RSP, argv_offset),
+            RAX);  // Set argv in target::NativeArguments.
+    __ addq(
+        RAX,
+        Immediate(1 * target::kWordSize));  // Retval is next to 1st argument.
+    __ movq(Address(RSP, retval_offset),
+            RAX);  // Set retval in target::NativeArguments.
 #if defined(DART_TARGET_OS_WINDOWS)
-  ASSERT(target::NativeArguments::StructSize() >
-         CallingConventions::kRegisterTransferLimit);
-  __ movq(CallingConventions::kArg1Reg, RSP);
+    ASSERT(target::NativeArguments::StructSize() >
+           CallingConventions::kRegisterTransferLimit);
+    __ movq(CallingConventions::kArg1Reg, RSP);
 #endif
-  __ CallCFunction(RBX);
+    __ CallCFunction(RBX);
 
-  // Mark that the thread is executing Dart code.
-  __ movq(Assembler::VMTagAddress(), Immediate(VMTag::kDartTagId));
+    // Mark that the thread is executing Dart code.
+    __ movq(Assembler::VMTagAddress(), Immediate(VMTag::kDartTagId));
 
-  // Mark that the thread has not exited generated Dart code.
-  __ movq(Address(THR, target::Thread::exit_through_ffi_offset()),
-          Immediate(0));
+    // Mark that the thread has not exited generated Dart code.
+    __ movq(Address(THR, target::Thread::exit_through_ffi_offset()),
+            Immediate(0));
 
-  // Reset exit frame information in Isolate's mutator thread structure.
-  __ movq(Address(THR, target::Thread::top_exit_frame_info_offset()),
-          Immediate(0));
+    // Reset exit frame information in Isolate's mutator thread structure.
+    __ movq(Address(THR, target::Thread::top_exit_frame_info_offset()),
+            Immediate(0));
 
-  // Restore the global object pool after returning from runtime (old space is
-  // moving, so the GOP could have been relocated).
-  if (FLAG_precompiled_mode) {
-    __ movq(PP, Address(THR, target::Thread::global_object_pool_offset()));
-  }
+    // Restore the global object pool after returning from runtime (old space is
+    // moving, so the GOP could have been relocated).
+    if (FLAG_precompiled_mode) {
+      __ movq(PP, Address(THR, target::Thread::global_object_pool_offset()));
+    }
+  });
 
   __ LeaveStubFrame();
 
@@ -565,7 +666,7 @@
 // Input parameters:
 //   RSP : points to return address.
 //   RSP + 8 : address of return value.
-//   RAX : address of first argument in argument array.
+//   R13 : address of first argument in argument array.
 //   RBX : address of the native function to call.
 //   R10 : argc_tag including number of arguments and function kind.
 static void GenerateCallNativeWithWrapperStub(Assembler* assembler,
@@ -605,49 +706,51 @@
   // Mark that the thread is executing native code.
   __ movq(Assembler::VMTagAddress(), RBX);
 
-  // Reserve space for the native arguments structure passed on the stack (the
-  // outgoing pointer parameter to the native arguments structure is passed in
-  // RDI) and align frame before entering the C++ world.
-  __ subq(RSP, Immediate(target::NativeArguments::StructSize()));
-  if (OS::ActivationFrameAlignment() > 1) {
-    __ andq(RSP, Immediate(~(OS::ActivationFrameAlignment() - 1)));
-  }
+  WithExceptionCatchingTrampoline(assembler, [&]() {
+    // Reserve space for the native arguments structure passed on the stack (the
+    // outgoing pointer parameter to the native arguments structure is passed in
+    // RDI) and align frame before entering the C++ world.
+    __ subq(RSP, Immediate(target::NativeArguments::StructSize()));
+    if (OS::ActivationFrameAlignment() > 1) {
+      __ andq(RSP, Immediate(~(OS::ActivationFrameAlignment() - 1)));
+    }
 
-  // Pass target::NativeArguments structure by value and call native function.
-  __ movq(Address(RSP, thread_offset), THR);  // Set thread in NativeArgs.
-  __ movq(Address(RSP, argc_tag_offset),
-          R10);  // Set argc in target::NativeArguments.
-  __ movq(Address(RSP, argv_offset),
-          RAX);  // Set argv in target::NativeArguments.
-  __ leaq(RAX,
-          Address(RBP, 2 * target::kWordSize));  // Compute return value addr.
-  __ movq(Address(RSP, retval_offset),
-          RAX);  // Set retval in target::NativeArguments.
+    // Pass target::NativeArguments structure by value and call native function.
+    __ movq(Address(RSP, thread_offset), THR);  // Set thread in NativeArgs.
+    __ movq(Address(RSP, argc_tag_offset),
+            R10);  // Set argc in target::NativeArguments.
+    __ movq(Address(RSP, argv_offset),
+            R13);  // Set argv in target::NativeArguments.
+    __ leaq(RAX,
+            Address(RBP, 2 * target::kWordSize));  // Compute return value addr.
+    __ movq(Address(RSP, retval_offset),
+            RAX);  // Set retval in target::NativeArguments.
 
-  // Pass the pointer to the target::NativeArguments.
-  __ movq(CallingConventions::kArg1Reg, RSP);
-  // Pass pointer to function entrypoint.
-  __ movq(CallingConventions::kArg2Reg, RBX);
+    // Pass the pointer to the target::NativeArguments.
+    __ movq(CallingConventions::kArg1Reg, RSP);
+    // Pass pointer to function entrypoint.
+    __ movq(CallingConventions::kArg2Reg, RBX);
 
-  __ movq(RAX, wrapper_address);
-  __ CallCFunction(RAX);
+    __ movq(RAX, wrapper_address);
+    __ CallCFunction(RAX);
 
-  // Mark that the thread is executing Dart code.
-  __ movq(Assembler::VMTagAddress(), Immediate(VMTag::kDartTagId));
+    // Mark that the thread is executing Dart code.
+    __ movq(Assembler::VMTagAddress(), Immediate(VMTag::kDartTagId));
 
-  // Mark that the thread has not exited generated Dart code.
-  __ movq(Address(THR, target::Thread::exit_through_ffi_offset()),
-          Immediate(0));
+    // Mark that the thread has not exited generated Dart code.
+    __ movq(Address(THR, target::Thread::exit_through_ffi_offset()),
+            Immediate(0));
 
-  // Reset exit frame information in Isolate's mutator thread structure.
-  __ movq(Address(THR, target::Thread::top_exit_frame_info_offset()),
-          Immediate(0));
+    // Reset exit frame information in Isolate's mutator thread structure.
+    __ movq(Address(THR, target::Thread::top_exit_frame_info_offset()),
+            Immediate(0));
 
-  // Restore the global object pool after returning from runtime (old space is
-  // moving, so the GOP could have been relocated).
-  if (FLAG_precompiled_mode) {
-    __ movq(PP, Address(THR, target::Thread::global_object_pool_offset()));
-  }
+    // Restore the global object pool after returning from runtime (old space is
+    // moving, so the GOP could have been relocated).
+    if (FLAG_precompiled_mode) {
+      __ movq(PP, Address(THR, target::Thread::global_object_pool_offset()));
+    }
+  });
 
   __ LeaveStubFrame();
   __ ret();
diff --git a/runtime/vm/exceptions.cc b/runtime/vm/exceptions.cc
index 95787d7..fc6e47b 100644
--- a/runtime/vm/exceptions.cc
+++ b/runtime/vm/exceptions.cc
@@ -2,9 +2,12 @@
 // 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.
 
+#include <setjmp.h>
+
 #include "vm/exceptions.h"
 
 #include "platform/address_sanitizer.h"
+#include "platform/thread_sanitizer.h"
 
 #include "lib/stacktrace.h"
 
@@ -612,13 +615,6 @@
   // in the previous frames.
   StackResource::Unwind(thread);
 
-  // Call a stub to set up the exception object in kExceptionObjectReg,
-  // to set up the stacktrace object in kStackTraceObjectReg, and to
-  // continue execution at the given pc in the given frame.
-  typedef void (*ExcpHandler)(uword, uword, uword, Thread*);
-  ExcpHandler func =
-      reinterpret_cast<ExcpHandler>(StubCode::JumpToFrame().EntryPoint());
-
   // Unpoison the stack before we tear it down in the generated stub code.
   uword current_sp = OSThread::GetCurrentStackPointer() - 1024;
   ASAN_UNPOISON(reinterpret_cast<void*>(current_sp),
@@ -635,7 +631,27 @@
   // The shadow call stack register will be restored by the JumpToFrame stub.
 #endif
 
+  // TODO(b/209838275): Re-enable this once g3 build rules for gen_snapshot are
+  // working with TSAN.
+#if 0  // defined(USING_THREAD_SANITIZER)
+  if (thread->exit_through_ffi() == Thread::kExitThroughRuntimeCall) {
+    auto tsan_utils = thread->tsan_utils();
+    tsan_utils->exception_pc = program_counter;
+    tsan_utils->exception_sp = stack_pointer;
+    tsan_utils->exception_fp = frame_pointer;
+    longjmp(*(tsan_utils->setjmp_buffer), 1);
+  }
+#endif  // defined(USING_THREAD_SANITIZER)
+
+  // Call a stub to set up the exception object in kExceptionObjectReg,
+  // to set up the stacktrace object in kStackTraceObjectReg, and to
+  // continue execution at the given pc in the given frame.
+  typedef void (*ExcpHandler)(uword, uword, uword, Thread*);
+  ExcpHandler func =
+      reinterpret_cast<ExcpHandler>(StubCode::JumpToFrame().EntryPoint());
+
   func(program_counter, stack_pointer, frame_pointer, thread);
+
 #endif
   UNREACHABLE();
 }
diff --git a/runtime/vm/isolate.cc b/runtime/vm/isolate.cc
index 11a73d3..55bad07 100644
--- a/runtime/vm/isolate.cc
+++ b/runtime/vm/isolate.cc
@@ -3369,7 +3369,8 @@
 // done atomically.
 void Isolate::RegisterServiceExtensionHandler(const String& name,
                                               const Instance& closure) {
-  if (Isolate::IsSystemIsolate(this)) {
+  // Don't allow for service extensions to be registered for internal isolates.
+  if (Isolate::IsVMInternalIsolate(this)) {
     return;
   }
   GrowableObjectArray& handlers =
@@ -3573,6 +3574,11 @@
   return group->source()->flags.is_system_isolate;
 }
 
+bool Isolate::IsVMInternalIsolate(const Isolate* isolate) {
+  return isolate->is_kernel_isolate() || isolate->is_service_isolate() ||
+         (Dart::vm_isolate() == isolate);
+}
+
 void Isolate::KillLocked(LibMsgId msg_id) {
   Dart_CObject kill_msg;
   Dart_CObject* list_values[4];
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
index 2c531f0..d79de5c 100644
--- a/runtime/vm/isolate.h
+++ b/runtime/vm/isolate.h
@@ -1401,6 +1401,7 @@
   static bool IsSystemIsolate(const Isolate* isolate) {
     return IsolateGroup::IsSystemIsolateGroup(isolate->group());
   }
+  static bool IsVMInternalIsolate(const Isolate* isolate);
 
   HandlerInfoCache* handler_info_cache() { return &handler_info_cache_; }
 
diff --git a/runtime/vm/service_event.cc b/runtime/vm/service_event.cc
index 120a1dc..9e4f399 100644
--- a/runtime/vm/service_event.cc
+++ b/runtime/vm/service_event.cc
@@ -54,14 +54,14 @@
   // over the service.
   ASSERT(isolate_ != Dart::vm_isolate());
 
-  // System isolates should never post service events. However, the Isolate
+  // VM internal isolates should never post service events. However, the Isolate
   // service object uses a service event to represent the current running state
   // of the isolate, so we need to allow for system isolates to create resume
   // and none events for this purpose. The resume event represents a running
   // isolate and the none event is returned for an isolate that has not yet
   // been marked as runnable (see "pauseEvent" in Isolate::PrintJSON).
-  ASSERT(isolate == NULL || !Isolate::IsSystemIsolate(isolate) ||
-         (Isolate::IsSystemIsolate(isolate) &&
+  ASSERT(isolate == NULL || !Isolate::IsVMInternalIsolate(isolate) ||
+         (Isolate::IsVMInternalIsolate(isolate) &&
           (event_kind == ServiceEvent::kResume ||
            event_kind == ServiceEvent::kNone ||
            // VM service can print Observatory information to Stdout or Stderr
diff --git a/runtime/vm/thread.cc b/runtime/vm/thread.cc
index 78feea8..5e838e6 100644
--- a/runtime/vm/thread.cc
+++ b/runtime/vm/thread.cc
@@ -48,6 +48,8 @@
     delete api_reusable_scope_;
     api_reusable_scope_ = NULL;
   }
+
+  DO_IF_TSAN(delete tsan_utils_);
 }
 
 #if defined(DEBUG)
@@ -86,6 +88,7 @@
       api_top_scope_(NULL),
       double_truncate_round_supported_(
           TargetCPUFeatures::double_truncate_round_supported() ? 1 : 0),
+      tsan_utils_(DO_IF_TSAN(new TsanUtils()) DO_IF_NOT_TSAN(nullptr)),
       task_kind_(kUnknownTask),
       dart_stream_(NULL),
       thread_lock_(),
diff --git a/runtime/vm/thread.h b/runtime/vm/thread.h
index 1eb3222..66faed4 100644
--- a/runtime/vm/thread.h
+++ b/runtime/vm/thread.h
@@ -9,6 +9,8 @@
 #error "Should not include runtime"
 #endif
 
+#include <setjmp.h>
+
 #include "include/dart_api.h"
 #include "platform/assert.h"
 #include "platform/atomic.h"
@@ -198,6 +200,8 @@
   V(uword, deoptimize_entry_, StubCode::Deoptimize().EntryPoint(), 0)          \
   V(uword, call_native_through_safepoint_entry_point_,                         \
     StubCode::CallNativeThroughSafepoint().EntryPoint(), 0)                    \
+  V(uword, jump_to_frame_entry_point_, StubCode::JumpToFrame().EntryPoint(),   \
+    0)                                                                         \
   V(uword, slow_type_test_entry_point_, StubCode::SlowTypeTest().EntryPoint(), \
     0)
 
@@ -257,6 +261,35 @@
   kNumLevels,
 };
 
+// Accessed from generated code.
+struct TsanUtils {
+  // Used to allow unwinding runtime C frames using longjmp() when throwing
+  // exceptions. This allows triggering the normal TSAN shadow stack unwinding
+  // implementation.
+  // -> See https://dartbug.com/47472#issuecomment-948235479 for details.
+  void* setjmp_function = reinterpret_cast<void*>(&setjmp);
+  jmp_buf* setjmp_buffer = nullptr;
+  uword exception_pc = 0;
+  uword exception_sp = 0;
+  uword exception_fp = 0;
+
+  static intptr_t setjmp_function_offset() {
+    return OFFSET_OF(TsanUtils, setjmp_function);
+  }
+  static intptr_t setjmp_buffer_offset() {
+    return OFFSET_OF(TsanUtils, setjmp_buffer);
+  }
+  static intptr_t exception_pc_offset() {
+    return OFFSET_OF(TsanUtils, exception_pc);
+  }
+  static intptr_t exception_sp_offset() {
+    return OFFSET_OF(TsanUtils, exception_sp);
+  }
+  static intptr_t exception_fp_offset() {
+    return OFFSET_OF(TsanUtils, exception_fp);
+  }
+};
+
 // A VM thread; may be executing Dart code or performing helper tasks like
 // garbage collection or compilation. The Thread structure associated with
 // a thread is allocated by EnsureInit before entering an isolate, and destroyed
@@ -441,6 +474,13 @@
     return OFFSET_OF(Thread, double_truncate_round_supported_);
   }
 
+  static intptr_t tsan_utils_offset() { return OFFSET_OF(Thread, tsan_utils_); }
+
+#if defined(USING_THREAD_SANITIZER)
+  uword exit_through_ffi() const { return exit_through_ffi_; }
+  TsanUtils* tsan_utils() const { return tsan_utils_; }
+#endif  // defined(USING_THREAD_SANITIZER)
+
   // The isolate that this thread is operating on, or nullptr if none.
   Isolate* isolate() const { return isolate_; }
   static intptr_t isolate_offset() { return OFFSET_OF(Thread, isolate_); }
@@ -1099,6 +1139,8 @@
   ApiLocalScope* api_top_scope_;
   uint8_t double_truncate_round_supported_;
 
+  TsanUtils* tsan_utils_ = nullptr;
+
   // ---- End accessed from generated code. ----
 
   // The layout of Thread object up to this point should not depend
diff --git a/sdk/lib/_internal/vm/lib/date_patch.dart b/sdk/lib/_internal/vm/lib/date_patch.dart
index 249399a..d404a16 100644
--- a/sdk/lib/_internal/vm/lib/date_patch.dart
+++ b/sdk/lib/_internal/vm/lib/date_patch.dart
@@ -33,7 +33,7 @@
   static const _MONTH_INDEX = 7;
   static const _YEAR_INDEX = 8;
 
-  List? __parts;
+  List<int>? __parts;
 
   @patch
   DateTime.fromMillisecondsSinceEpoch(int millisecondsSinceEpoch,
@@ -191,7 +191,7 @@
     return list;
   }
 
-  get _parts {
+  List<int> get _parts {
     return __parts ??= _computeUpperPart(_localDateInUtcMicros);
   }
 
@@ -282,7 +282,7 @@
         _flooredDivision(year - 1601, 400);
   }
 
-  static bool _isLeapYear(y) {
+  static bool _isLeapYear(int y) {
     // (y % 16 == 0) matches multiples of 400, and is faster than % 400.
     return (y % 4 == 0) && ((y % 16 == 0) || (y % 100 != 0));
   }
diff --git a/sdk/lib/core/uri.dart b/sdk/lib/core/uri.dart
index 3e24c54..543cb5f 100644
--- a/sdk/lib/core/uri.dart
+++ b/sdk/lib/core/uri.dart
@@ -1188,7 +1188,7 @@
     //  - The last two parts may be replaced by an IPv4 "dotted-quad" address.
 
     // Helper function for reporting a badly formatted IPv6 address.
-    void error(String msg, [position]) {
+    void error(String msg, int? position) {
       throw FormatException('Illegal IPv6 address, $msg', host, position);
     }
 
@@ -1204,7 +1204,7 @@
       return value;
     }
 
-    if (host.length < 2) error('address is too short');
+    if (host.length < 2) error('address is too short', null);
     List<int> parts = [];
     bool wildcardSeen = false;
     // Set if seeing a ".", suggesting that there is an IPv4 address.
@@ -1238,7 +1238,7 @@
         seenDot = true;
       }
     }
-    if (parts.length == 0) error('too few parts');
+    if (parts.length == 0) error('too few parts', null);
     bool atEnd = (partStart == end);
     bool isLastWildcard = (parts.last == -1);
     if (atEnd && !isLastWildcard) {
@@ -1255,10 +1255,10 @@
     }
     if (wildcardSeen) {
       if (parts.length > 7) {
-        error('an address with a wildcard must have less than 7 parts');
+        error('an address with a wildcard must have less than 7 parts', null);
       }
     } else if (parts.length != 8) {
-      error('an address without a wildcard must contain exactly 8 parts');
+      error('an address without a wildcard must contain exactly 8 parts', null);
     }
     List<int> bytes = Uint8List(16);
     for (int i = 0, index = 0; i < parts.length; i++) {
diff --git a/tools/VERSION b/tools/VERSION
index dee2d26..f386dba 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 16
 PATCH 0
-PRERELEASE 92
+PRERELEASE 93
 PRERELEASE_PATCH 0
\ No newline at end of file