Version 2.14.0-377.0.dev

Merge commit '0edf000b87cd5a7fdc7aec8ddec28f6b1414d0a7' into 'dev'
diff --git a/runtime/platform/globals.h b/runtime/platform/globals.h
index 42edc70..ed20219 100644
--- a/runtime/platform/globals.h
+++ b/runtime/platform/globals.h
@@ -334,6 +334,10 @@
 #error Automatic target architecture detection failed.
 #endif
 
+#if defined(TARGET_ARCH_IS_64_BIT) && !defined(DART_COMPRESSED_POINTERS)
+#define HAS_SMI_63_BITS 1
+#endif
+
 // Verify that host and target architectures match, we cannot
 // have a 64 bit Dart VM generating 32 bit code or vice-versa.
 #if defined(TARGET_ARCH_X64) || defined(TARGET_ARCH_ARM64)
diff --git a/runtime/vm/compiler/assembler/assembler_base.h b/runtime/vm/compiler/assembler/assembler_base.h
index 55258dc..1f22998 100644
--- a/runtime/vm/compiler/assembler/assembler_base.h
+++ b/runtime/vm/compiler/assembler/assembler_base.h
@@ -193,7 +193,7 @@
   // 64-bit ARM specific constants.
   kQWord,
 
-#if defined(TARGET_ARCH_IS_64_BIT) && !defined(DART_COMPRESSED_POINTERS)
+#if defined(HAS_SMI_63_BITS)
   kObjectBytes = kEightBytes,
 #else
   kObjectBytes = kFourBytes,
diff --git a/runtime/vm/compiler/backend/il.cc b/runtime/vm/compiler/backend/il.cc
index 129f0e7..527fa42 100644
--- a/runtime/vm/compiler/backend/il.cc
+++ b/runtime/vm/compiler/backend/il.cc
@@ -3736,7 +3736,7 @@
   switch (from) {
     case kUnboxedUint8:
     case kUnboxedUint16:
-#if defined(TARGET_ARCH_IS_64_BIT) && !defined(DART_COMPRESSED_POINTERS)
+#if defined(HAS_SMI_63_BITS)
     case kUnboxedInt32:
     case kUnboxedUint32:
 #endif
diff --git a/runtime/vm/compiler/backend/type_propagator.cc b/runtime/vm/compiler/backend/type_propagator.cc
index 9aecb2c..06edf78 100644
--- a/runtime/vm/compiler/backend/type_propagator.cc
+++ b/runtime/vm/compiler/backend/type_propagator.cc
@@ -699,7 +699,7 @@
 }
 
 CompileType CompileType::Int32() {
-#if defined(TARGET_ARCH_IS_64_BIT) && !defined(DART_COMPRESSED_POINTERS)
+#if defined(HAS_SMI_63_BITS)
   return FromCid(kSmiCid);
 #else
   return Int();
diff --git a/runtime/vm/compiler/frontend/kernel_to_il.cc b/runtime/vm/compiler/frontend/kernel_to_il.cc
index 06b2e7e..68cdb57 100644
--- a/runtime/vm/compiler/frontend/kernel_to_il.cc
+++ b/runtime/vm/compiler/frontend/kernel_to_il.cc
@@ -1486,7 +1486,7 @@
       body += Box(kUnboxedFfiIntPtr);
     } break;
     case MethodRecognizer::kHas63BitSmis: {
-#if defined(TARGET_ARCH_IS_64_BIT) && !defined(DART_COMPRESSED_POINTERS)
+#if defined(HAS_SMI_63_BITS)
       body += Constant(Bool::True());
 #else
       body += Constant(Bool::False());
diff --git a/tests/language/generic_methods/explicit_instantiated_tearoff_test.dart b/tests/language/generic_methods/explicit_instantiated_tearoff_test.dart
index 968ae22..5813d60 100644
--- a/tests/language/generic_methods/explicit_instantiated_tearoff_test.dart
+++ b/tests/language/generic_methods/explicit_instantiated_tearoff_test.dart
@@ -68,7 +68,8 @@
 
     Expect.identical(staticMethod<int, String>, staticTearOff);
 
-    Expect.equals(
+    // Extension instance methods are not equal unless identical.
+    Expect.notEquals(
         extInstanceMethod<int, String>, this.extInstanceMethod<int, String>);
   }
 }
@@ -132,7 +133,9 @@
       o.instanceMethod<int, String>, o.instanceMethod<int, String>);
   Expect.equals(
       o.mixinInstanceMethod<int, String>, o.mixinInstanceMethod<int, String>);
-  Expect.equals(
+
+  // Instantiated extension methods are not equal unless they are identical.
+  Expect.notEquals(
       o.extInstanceMethod<int, String>, o.extInstanceMethod<int, String>);
 
   // And not canonicalized where they shouldn't (different types).
diff --git a/tools/VERSION b/tools/VERSION
index a209f12..42c0eae 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -27,5 +27,5 @@
 MAJOR 2
 MINOR 14
 PATCH 0
-PRERELEASE 376
+PRERELEASE 377
 PRERELEASE_PATCH 0
\ No newline at end of file